如何将这些字符串从php传递给javascript

时间:2010-07-04 07:51:09

标签: php javascript jquery ajax

我的应用程序中有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个变量

感谢;

5 个答案:

答案 0 :(得分:5)

将它们编码为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
    }
});

如果您希望a1a2a3a4成为数字数组而不是包含数字的字符串,那么只需JSON解码PHP上的字符串发送给他们之前的一面:

echo json_encode(array(
    "a1" => json_decode($a1),
    "a2" => json_decode($a2),
    "a3" => json_decode($a3),
    "a4" => json_decode($a4)
));

答案 1 :(得分:1)

在php端使用json_encode并以这种方式传回数据 http://us3.php.net/manual/en/function.json-encode.php

答案 2 :(得分:0)

return "{ A1: '[10,20,13,14]', A2: '[17,15,14,16]', A3: '[18,24,16,17]', A4: '[15,54,18,27]' }";

虽然您也可以通过删除引号将它们作为实际数组传递。

答案 3 :(得分:0)

使用serialize()方法。将变量传递到输入字段中:

$.post("loaddata.php", $("#ajaxform").serialize(), function(data){
  //
});

答案 4 :(得分:0)

$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]}