2017-02-20 50 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; 
     }