首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否允许在jQuery Ajax中混合POST/JSON数据?

是否允许在jQuery Ajax中混合POST/JSON数据?
EN

Stack Overflow用户
提问于 2016-05-24 06:32:52
回答 5查看 98关注 0票数 0

我有以下代码,其中通过jQuery AJAX方法对服务器进行客户端调用。服务器在JSON中反驳结果。所有操作都很好,但我发现解析数据所需的“替换”有点麻烦和奇怪,如果我不抑制"“和"”字符,代码就根本无法工作。对如何改进它有什么建议吗?

客户端代码:

代码语言:javascript
运行
复制
    jQuery.ajax({
    type: 'POST',
    url: 'ajax/cart_update.php?lang=en',
    data: { 
        'id': id ,
        'incr' : increment,
        'quantity' : jQuery("#quantity_number" + id).val(), 
        'final_quantity' : final_quantity,
    },
    success: function(data){
        var data = data.replace("[", "");
        data = data.replace("]", "");
        if(data != ""){
            var obj = jQuery.parseJSON(data);
            jQuery("#quantity_number" + id).val(obj.quantity);
            jQuery("#total" + id).html(obj.price);
        } // if
    }
});

服务器(PHP)代码:

代码语言:javascript
运行
复制
 ... some SQL query...

 $value[0]["quantity"] = $row->quantity;
 $value[0]["price"] = get_price_product($row->id_product, $row->quantity);

 echo json_encode($value);

输出为字符串:{“数量”:"8",“价格”:“1,756.00”}

为什么我要压制"“和"”的角色?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-05-24 06:43:14

实际上,您正在尝试从json响应中获得一个对象。对于jquery中的$.each()和普通js中的for..in等迭代器,这是非常容易获得的:

您可以在像$.each()这样的迭代器中使用这一点:

代码语言:javascript
运行
复制
jQuery.ajax({
  type: 'POST',
  url: 'ajax/cart_update.php?lang=en',
  //datatype: 'json', // <----add this, this can parse the response as json.
  data: {
    'id': id,
    'incr': increment,
    'quantity': jQuery("#quantity_number" + id).val(),
    'final_quantity': final_quantity,
  },
  success: function(data) {
    if (data != "") {
      var resp = jQuery.parseJSON(data); // You don't have datatype, so this is required.
      jQuery.each(resp, function(i, obj) {
        jQuery("#quantity_number" + id).val(obj.quantity);
        jQuery("#total" + id).html(obj.price);
      });
    } // if
  }
});

如果在ajax选项中添加datatype: 'json',则不必将json字符串解析为有效的json。datatype自动地这样做--所以,您不必显式地这样做,就像您正在做的那样。

票数 1
EN

Stack Overflow用户

发布于 2016-05-24 06:39:50

如果您不抑制"“和"”字符并解析响应json,那么它将是一个对象数组。您需要在这个数组上循环,在循环中您可以访问每个对象的属性。当前的代码现在可以工作,因为很可能数组中只有一个项。但是,如果要获得多个项,则当前代码也会中断。

票数 1
EN

Stack Overflow用户

发布于 2016-05-24 06:40:55

您可以循环数组并获得结果。

代码语言:javascript
运行
复制
var obj = jQuery.parseJSON(data);
$.each(obj, function(index, value) {
  $("#quantity_number" + id).val(value.quantity);
  $("#total" + id).html(value.price);
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37405987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档