【问题标题】:how to pass these strings from php to javascript如何将这些字符串从 php 传递到 javascript
【发布时间】:2010-07-04 07:51:09
【问题描述】:

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

谢谢;

【问题讨论】:

    标签: php javascript jquery ajax


    【解决方案1】:

    将它们编码为 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 成为数字数组而不是包含数字的字符串,只需在 PHP 端对字符串进行 JSON 解码,然后再发送:

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

    【讨论】:

    • 我认为没有必要嵌套 json_encode。一个包装器 json_encode jsonEncodes 所有的对象,不是吗?
    • @Erik:是的,但是你看,我没有嵌套json_encodes。它正在解码它们,然后重新编码完整的结构。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      使用 serialize() 方法。在输入字段中传递变量,然后:

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

      【讨论】:

        【解决方案4】:
        $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]}
        

        【讨论】:

          【解决方案5】:
          return "{ A1: '[10,20,13,14]', A2: '[17,15,14,16]', A3: '[18,24,16,17]', A4: '[15,54,18,27]' }";
          

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-05-15
            • 2015-10-10
            • 2016-10-26
            • 1970-01-01
            • 2015-10-29
            • 2012-08-23
            相关资源
            最近更新 更多