如何将这些字符串从php传递给javascript
我在我的应用程序中有4个字符串,我想传递给我的js文件
$a1='[10,20,13,14]'; $a2='[17,15,14,16]'; $a3='[18,24,16,17]'; $a4='[15,54,18,27]'; echo $a1.",".$a2.",".$a3.",".$a4;
我的javascriptcode是
$.ajax({ type: "POST", dataType: "json", url: "loaddata.php", success: function(data) { alert(data); //alert 15,54,18,27 } });
我只能获得$ a4字符串,而且我无法获得其他字符串
我如何在PHP中传递这4个字符串并在javascript中设置这4个变量
谢谢;
将它们编码为JSON。
在PHP方面:
echo json_encode(array("a1" => $a1, "a2" => $a2, "a3" => $a3, "a4" => $a4));
在JavaScript方面:
$.ajax({ type: "POST", dataType: "json", url: "loaddata.php", success: function(data) { var a1=data.a1; var a2=data.a2; var a3=data.a3; var a4=data.a4; // do something with a1, a2, a3 and a4 } });
如果你想让a1
, a2
, a3
和a4
成为数字数组而不是包含数字的字符串,那么在发送它们之前,只需JSON解码PHP端的字符串:
echo json_encode(array( "a1" => json_decode($a1), "a2" => json_decode($a2), "a3" => json_decode($a3), "a4" => json_decode($a4) ));
在php端使用json_encode并以这种方式传回数据http://us3.php.net/manual/en/function.json-encode.php
使用serialize()方法。 在输入字段中传递变量,并:
$.post("loaddata.php", $("#ajaxform").serialize(), function(data){ // });
$a1='[10,20,13,14]'; $a2='[17,15,14,16]'; $a3='[18,24,16,17]'; $a4='[15,54,18,27]'; echo $a1.",".$a2.",".$a3.",".$a4;
将返回
[10,20,13,14],[17,15,14,16],[18,24,16,17],[15,54,18,27]
这不是有效的JSON字符串。
您可以返回包含数组数组的对象,如下所示:
echo "[".$a1.",".$a2.",".$a3.",".$a4."]"; // => [[10,20,13,14],[17,15,14,16],[18,24,16,17],[15,54,18,27]]
或者你可以返回一个带有命名键的对象来访问不同的数组。
echo "{a1:".$a1.",a2:".$a2.",a3:".$a3",a4:".$a4."}; // => {a1:[10,20,13,14], a2:[17,15,14,16], a3:[18,24,16,17], a4:[15,54,18,27]}
甚至更多的黄油:不要自己构建JSON字符串并使用PHP的json_encode
代替:
$a1=array(10,20,13,14); $a2=array(17,15,14,16); $a3=array(18,24,16,17); $a4=array(15,54,18,27); echo json_encode(array($a1,$a2,$a3,$a4)); // => [[10,20,13,14],[17,15,14,16],[18,24,16,17],[15,54,18,27]] // or if you want an associative array echo json_encode(array("a1" => $a1, "a2" => $a2, "a3"=> $a3, "a4" => $a4)); // => {a1:[10,20,13,14], a2:[17,15,14,16], a3:[18,24,16,17], a4:[15,54,18,27]}
return "{ A1: '[10,20,13,14]', A2: '[17,15,14,16]', A3: '[18,24,16,17]', A4: '[15,54,18,27]' }";
虽然你也可以通过删除引号将它们作为实际数组传递。