【问题标题】:Jquery Ajax and jsonJquery Ajax 和 json
【发布时间】:2013-03-22 11:10:23
【问题描述】:

我通过 ajax 向 mysql 查询发送一个值。我从查询中得到输出作为数组。我用echo json_encode($var);

如果我的数组大小大于 1,我的成功函数不会被调用。我可以在 fire bug 中看到响应和状态码 200。

我应该如何在我的成功函数中检索值?

  success: function(data){
         ob = jQuery.parseJSON(data); 
  }               

更新 我从萤火虫得到的 Json 响应

{"uid":"4",
"name":"ram\u00fcrmeg\u00f6zl\u00fcer",
"pic_big":"http:\/\/profile.ak.fbcdn.net\/hprofile-ak-prn1\/4149__3333_n.jpg"}
    $.ajax({
        type: "POST",
        url: "x.php",
        dataType: 'json',
        data: y,
        success: function(data){    
         }
})

【问题讨论】:

  • 你能解释一下If my array size is more than 1, my success function is not getting called。有适当的数据
  • 向我们展示这两种情况下的回声输出。
  • @Yougesh Suthar:我可以看到来自 firebug 的数组形式的响应,所以我的意思是这个数组。
  • @Sanchit:我已经在附和它了。你能告诉我,如何在成功的 fn 中检索它。
  • 我认为您需要向我们展示您正在进行的整个 ajax 调用。您的 javascript 成功函数看起来是文件。

标签: php jquery


【解决方案1】:

试试下面的,看看你是否收到任何警报。

if(!$.isEmptyObject(data))
       { 
       alert (data);  
       var len = data.length;
       for (var i = 0; i< len; i++) {
    var var1 = [data[i].uid];
    var var2 = [data[i].name];
            var var3 = [data[i].pic_big];   

      }
else{alert('No data')}

【讨论】:

  • @ram 甚至警报?我假设您已将 if 语句放在 function(data){} 部分。
  • @alert(data) 正在工作。我不明白这一点。'我假设您已将 if 语句放在 function(data){} 部分中。'
  • :我应该先解码数据变量成功 fn 对。你能给我看一个完全成功 fn 的样本吗?
【解决方案2】:

您的响应已经是一个对象,无需解析它。只需执行此操作即可获取值:

console.log(data.uid);
console.log(data.name);
console.log(data.pic_big);

或者你想用这些值做什么。

【讨论】:

    【解决方案3】:

    你可以试试:

        $.ajax({
        type: "POST",
            url: "x.php",
            dataType: 'json',
            data: y,
            success: function(data){
    
               $.each(data, function() {
                  var uid = this.uid; // etc
               } 
    
              // this works alone if your response is wrapped in [ ], if not:
              if(!data.length) {
                  var uid = data.uid;
              } else { // above $.each code 
              }
    
          }
    

    jsFiddle 在这里:http://jsfiddle.net/Y73xe/

    【讨论】:

    • :如果我的 json 是这个 {"uid":"4", "name":"ram\u00fcrmeg\u00f6zl\u00fcer", "pic_big":"http:\/\/profile. ak.fbcdn.net\/hprofile-ak-prn1\/4149__3333_n.jpg"} {"uid":"5", "name":"ram\u00fcrmeg\u00f6zl\u00fcer", "pic_big":"http:\ //profile.ak.fbcdn.net\/hprofile-ak-prn1\/4149__3333_n.jpg"}{"uid":"6", "name":"ram\u00fcrmeg\u00f6zl\u00fcer", "pic_big" :"http:\/\/profile.ak.fbcdn.net\/hprofile-ak-prn1\/4149__3333_n.jpg"} 没有任何警报。如果它是 {"uid":"4", "name":" ram\u00fcrmeg\u00f6zl\u00fcer", "pic_big":"http:\/\/profile.ak.fbcdn.net\/hprofile-ak-prn1\/4149__3333_n.jpg"},我收到了警报。
    • 那是因为它不是一个有效的 JSON 数组,你需要在那个 JSON 字符串周围用 [ ] 使它成为一个正确的数组,然后 $.each 就可以工作了。
    • 如何添加[]这个。我从 facebook api 得到一个数组并将其传递给 json_encode();
    • 我认为问题在于解析、json_encode 或 $.parseJSON。您只需使用从 Facebook 返回的响应,该响应应采用有效的 JSON 数组格式(带有 [])。
    • :stackoverflow.com/questions/15570173/…你能回答这个问题吗?
    猜你喜欢
    • 2011-02-06
    • 1970-01-01
    • 2010-11-18
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多