2013-08-14 34 views
12

Tôi gọi hàm getResult() mọi lúc khi res.reply = 2, nhưng có trường hợp res trống. Khi giá trị trả lại trống rỗng console.log("error") được gọi. Điều này hoạt động trong các phiên bản cũ hơn của jQuery Mobile. Hiện tại, phiên bản là 1.3.2.Cuộc gọi jQuery ajax trả về lỗi rỗng nếu nội dung trống

function getResult() 
{ 
    request = $.ajax({ 
     type: "POST", 
     url: url, 
     dataType: "json", 
     data: { 
      .... 
     }, 
     error: function() {   
      console.log("error"); 
     }, 
     success: function(res) { 
      if(res.reply=='2') { 
       getResult(); 
      }   
     } 
    }); 
} 
+1

Mong đợi trợ giúp với jQuery 1.3.2 là một chút ... * lạc quan *. Tại sao bạn không sử dụng phiên bản hiện tại? – lonesomeday

+0

Việc xử lý trình xử lý 'error' không nhất thiết có nghĩa là phản hồi trống - điều này thường có nghĩa là không thể truy xuất phản hồi do lỗi trên máy chủ. Kiểm tra lưu lượng mạng trong Firebug và máy chủ của bạn ghi lại lỗi. –

+1

Lỗi nào bạn nhận được .. bạn có thể kiểm tra với 'error: function (xhr, err) { console.log (xhr); console.log (err); } ' – Pranav

Trả lời

23
dataType: "json" 

có nghĩa là: cho tôi json, không có gì khác. một chuỗi rỗng không phải là json, vì vậy recieving một chuỗi rỗng có nghĩa là nó không phải là một thành công ...

request = $.ajax({ 
    type: "POST", 
    url: url, 
    data: { 
     .... 
    }, 
    error: function() {   
     console.log("error"); 
    }, 
    success: function(res) { 
     var response = jQuery.parseJSON(res); 
     if(typeof response == 'object'){ 
      if(response.reply == '2') { 
       getResult(); 
      } 
     } else { 
       //response is empty 
     } 
    } 
}); 
0

Hình như bình thường bạn làm muốn có một phản ứng JSON, vì vậy tôi sẽ không thay đổi datatype của bạn để " văn bản ", thay vào đó tôi sẽ yêu cầu máy chủ trả về một phản hồi JSON hợp lệ ngay cả khi phản hồi trống "{}" thay vì "".