代码之家  ›  专栏  ›  技术社区  ›  gautamlakum

php:如何提取Ajax数组响应

  •  1
  • gautamlakum  · 技术社区  · 15 年前

    我正在从php url获取数组格式的Ajax响应。如何在jquery中提取数组响应值? FY:

    PHP数组是:

    $response = array('msg' => 'Hello', 'html' => '<b>Good bye</b>');
    

    我在Ajax响应中得到$response数组。即

    var promo = "promo=45fdf4684sfd";
    $.ajax({
        type: "POST",
        url: baseJsUrl + "/users/calc_discount",
        data: promo,
        success: function (msg) { // I am getting $response here as ajax response.
            //alert(msg);
    
            // Here I want to check whether response is in array format or not. if it is in array format, I want to extract msg here and want to use response array values.
        }
    });
    

    请告诉我答案。 谢谢。

    4 回复  |  直到 13 年前
        1
  •  8
  •   alex    15 年前

    你应该附和一下 $response 具有 json_encode() .

    你应该准备好 dataType: 'json' 也在发送到的对象文本中 $.ajax() .

    然后,您可以使用success回调中的点运算符以javascript本地访问它…

    function(msg) {
        alert(msg.html);
    }
    

    顺便说一句,这句话…

    $response = array(['msg'] => 'Hello', 'html' => '<b>Good bye</b>');
    

    isn't valid PHP . 从第一把钥匙上拆下支架。

        2
  •  1
  •   Māris Kiseļovs    15 年前

    我最喜欢的解决方案是用PHP的函数json_encode()对数组进行编码,这样jquery就可以很乐意解析它了。

        3
  •  0
  •   Emil Vikström    15 年前

    我假定您的意思是JSON响应,如下所示:

    {"msg":"Hello","html":"<b>Good bye<\/b>"}
    

    这实际上是一个本地JS对象,因此您可以像这样立即使用它:

    success: function(msg){
       alert(msg.msg);
       alert(msg.html);
    }
    

    您也可以使用 jQuery.each() 函数来循环JSON对象的所有属性,如果需要:

    jQuery.each(msg, function(key, val) {
      alert(key + "=" + val);
    });
    
        4
  •  0
  •   Satya Prakash    15 年前

    如果您没有对PHP输出的控制权,那么您可以使用其他方法来获得结果。 另一个解决方案是使用 http://phpjs.org/ 图书馆。在这里,您可以找到许多在JS中可用的函数,这些函数在PHP中可用。用法与php相同。所以我觉得如果你从那里得到json_编码/json_解码并使用它,那么它可以很容易地解决你的问题。

    记住,您只能编译所需的函数。在您的例子中,它是json_编码和json_解码。不需要下载整个库。编译库的URL: http://phpjs.org/packages/configure