2015-08-19 13 views
6

Tôi đã khai báo các cuộc gọi lại là successerror, nhưng trong trường hợp mã trạng thái 200 cũng gọi là chỉ gọi lại lỗi.AJAX: chỉ gọi lại lỗi được kích hoạt

Tôi đã thực hiện cuộc gọi curl tới một số tệp khác php quá bên trong registry.php.

Ở đây những gì tôi đã cố gắng:

$.ajax({ 
    type: "POST" 
    ,data: { 
    action: "blah" 
    ,mobileNo: that.mobNo 
    ,token: that.key 
    } 
    ,url: "http://90.8.41.232/localhost/registry.php" 
    ,cache: false 
    ,dataType: "json" 
    ,success: function (response) { 
    console.log("success"); 
    } 
    ,error: function() { 
    console.log("error"); 
    } 
}); 

Tôi đã đọc trong tài liệu mà chúng ta không cần phải gọi thành công gọi lại một cách rõ ràng, hy vọng đó là chính xác.

Bất kỳ ý tưởng cách gọi lại gọi lại thành công khi đó là 200 mã trạng thái.

RESPONSE hy vọng điều này sẽ giúp, điều này tôi đã sao chép từ bảng điều khiển chrome, không được in bởi console.log().

bort: (statusText) 
always:() 
complete:() 
done:() 
error:() 
fail:() 
getAllResponseHeaders:() 
getResponseHeader: (key) 
overrideMimeType: (type) 
pipe:() 
progress:() 
promise: (obj) 
readyState: 4 
responseText: "{"success":"Mobile No 9535746622 is approved"}  {"report":true}" 
setRequestHeader: (name,value) 
state:() 
status: 200 
statusCode: (map) 
statusText: "OK" 
success:() 
then:() 
+2

Mã của bạn có vẻ đúng, là câu trả lời từ máy chủ hợp lệ không? – aghidini

+0

Bạn có chắc chắn 'http: // 90.8.41.232/localhost/registry.php' không phải là truy cập dữ liệu tên miền chéo không? nếu đó là sau đó bạn có thể cần phải kích hoạt cors tại registry.php bằng cách cung cấp các tiêu đề cụ thể và bạn cũng cần phải kiểm tra 'jsonp' để truy cập dữ liệu tên miền chéo. – Jai

+0

Hàm lỗi có ba đối số. Nhìn vào họ, họ có thể sẽ cho bạn biết những gì là sai. Bảng điều khiển lỗi JavaScript cũng có thể hiển thị lỗi cho bạn. Tab Net của công cụ nhà phát triển của bạn sẽ cho phép bạn xác nhận nếu bạn có mã trạng thái 200 OK trong phản hồi, bạn đã kiểm tra chưa? – Quentin

Trả lời

2

Như bạn đã nói rằng bạn đang thực hiện cuộc gọi curl một số khác php, những gì xảy ra là bất cứ khi nào bạn thực hiện curl gọi cho bạn phải trả lại phản hồi của curl cho khách hàng. Vì vậy, để chuyển giá trị return của cuộc gọi curl, bạn phải đặt một tùy chọn curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);. Điều này sẽ sắp xếp sự cố của bạn. Hy vọng vậy.

+0

tuyệt vời ... nó làm việc nhờ – PJ1405

2

Thứ nhất, kiểm tra các lỗi thực bạn nhận được (không chắc chắn bạn thực sự có được một trạng thái 200?)

error: function (err) { 
    console.error("error"); 
    console.log(err); 
    console.log(err.stack); 
    throw err; 
} 

Hiện chúng tôi các bản ghi kết quả xin vui lòng.

+0

tôi đã thêm đối tượng phản hồi, có mã trạng thái '200' n' ok'. – PJ1405

+0

Vui lòng đặt console.log (err); Nó giống như bạn sẽ thấy các chi tiết lỗi ném –

-2

tôi đã làm điều đó một vài tuần trước và đối với tôi nó hoạt động nếu tôi gọi nó như

$.ajax(
{ 
    type: "POST", 
    data: { action: "blah", mobileNo: that.mobNo, token: that.key }, 
    url: "http://90.8.41.232/localhost/registry.php", 
    cache: false, 
    dataType: json, 
}) 
.success (function (data, status, jqxhr) 
{ 
    // do your stuff 
}) 
.error (function(x, status, jqxhr) 
{ 
    // handle your errors 
}); 
Các vấn đề liên quan