【问题标题】:PHP: how to extract ajax array responsePHP:如何提取ajax数组响应
【发布时间】:2023-04-04 00:00:02
【问题描述】:

我从 php url 获得数组格式的 ajax 响应。如何在jQuery中提取数组响应值? 仅供参考:

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.
    }
});

请告诉我答案。 谢谢。

【问题讨论】:

    标签: php javascript jquery ajax arrays


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您应该用json_encode() 回应$response

      您也应该在发送给$.ajax() 的对象文字中设置dataType: 'json'

      然后,您可以在成功回调中使用点运算符使用 JavaScript 本地访问它...

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

      顺便说一句,这条线...

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

      ...isn't valid PHP。删除第一个键的括号。

      【讨论】:

      • 你的例子真的有效吗?我必须先解析响应才能得到这样的结果: var obj = jQuery.parseJSON(msg);警报(obj.html);
      • @Hexodus 取决于您使用什么 jQuery 函数来读取它。如果你告诉它响应类型是json,它会自动解析它(你应该这样做)。
      【解决方案3】:

      我认为您的意思是 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】:

        如果您无法控制 PHP 输出,则可以使用另一种方法来获取结果。 另一种解决方案是使用http://phpjs.org/ 库。在这里,您可以找到许多 JS 中可用的函数,就像 php 中可用的一样。用法也与 PHP 相同。所以我觉得如果你从那里得到 json_encode/json_decode 并使用它,那么它可以很容易地解决你的问题。

        请记住,您只能编译您需要的函数。在您的情况下,它是 json_encode 和 json_decode。无需下载整个库。编译库的网址:http://phpjs.org/packages/configure

        【讨论】:

        • PHPJS 的 json_encode 和 _decode 仅适用于 JS 对象,不适用于 PHP 等价物。
        • 是的,埃米尔。你说的对。我还没有测试那里的每个函数,但根据他们的工作方式,json_encode/decode 应该与 PHP 对应的工作方式相同。我从那里使用了一些功能,并且以正确的方式工作。感谢您指出错误。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多