2017-02-20 47 views
1

我在JavaScript中的下一個代碼:如何獲得2個變量的jQuery響應?

 $.ajax({ 
     type : "POST", 
     url : "get_link.php", 
     data: { 
     }, 
     success:function (data) { 
      links = data; -> Here needs to be the first line of the query 
      seconds = data2; -> Here needs to be the second line of the query 


     } 
    }); 

我想從get_link.php的信息,get_link.php是這樣的:

["http://stackoverflow.com", "http://mywebsite.com"] 
[10, 100] 

我想要得到的信息簡單,因爲我想定義一個變量與第一行和第二行的鏈接,第二行。 感謝

+0

這是返回數組的數組?試試'data [0]'和'data [1]'。 –

+2

你有控制權的PHP服務器?讓它返回一個json對象,這樣你可以通過'data.links'和'data.seconds'訪問數據 –

+0

返回的信息是無效的JSON。你能使它有效嗎?如帶有數組的字符串屬性的對象或字符串數​​組的數組?或者您需要將該響應解析爲字符串嗎? – David

回答

0

拆分對換行符的響應:

success: function(data) { 
    var lines = data.split('\n'); 
    var links = JSON.parse(lines[0]); 
    var seconds = JSON.parse(lines[1]); 
    ... 
} 

但它會更好,如果你返回一個包含二維陣列中的單個JSON。

$seconds = array(); 
$links = array(); 
while ($row = mysqli_fetch_assoc($result)) { 
    $seconds[] = $row['seconds']; 
    $links[] = $row['links']; 
} 
echo json_encode(array('seconds' => $seconds, 'links' => $links)); 

甚至更​​好,保持相關數據一起:

$results = array(); 
while ($row = mysqli_fetch_assoc($result)) { 
    $results[] = array('seconds' => $row['seconds'], 'link' => $row['link']); 
} 
echo json_encode($results); 

這將產生:

[{"seconds": 10, "link": "http://stackoverflow.com"}, 
{"seconds": 100, "link": "http://mywebsite.com"}] 
+0

你的意思是這樣嗎?:$ result = mysqli_query($ connect,$ sql); $秒= 0; ($ row = mysqli_fetch_assoc($ result)){ $ links = $ row [「link」]; $ seconds = $ row [「seconds」]; } return array($ seconds,$ links); } $ array = getlink(); $ seconds = $ array [0]; $ links = $ array [1]; $ variable = array('seconds'=>「$ seconds」, 'links'=>「$ links」); echo json_encode($ variable,JSON_UNESCAPED_SLASHES);獲得此回覆{「seconds」:「100」,「links」:「http://stackoverflow.com」} –

+0

我已經更新了答案,以顯示您應該如何執行此操作。 – Barmar

+0

好的,在JavaScript中,我該怎麼做?對不起,但即時通訊新的javascript.Thanks –

0

如果響應是1個陣列陣列可以使用數據[訪問0]和數據[1]。 如果響應只包含2(或幾個)對象,我想你可以定義像這樣你的成功的功能:

success:function (dataLinks, dataSeconds) { 
      links = dataLinks; 
      seconds = dataSeconds; 
     }