2012-06-08 28 views
8

Tôi có ít Dịch vụ- với các URL sạchCuộc gọi JSONP AJAX tự động thêm tham số gọi lại. Làm thế nào để loại bỏ điều đó?

và trong khi gọi từng dịch vụ, mẫu URL đang được chọn.

Bây giờ, hãy gọi những URL đó qua AJAX từ một máy chủ khác bằng cách sử dụng kỹ thuật JSONP.

Nhưng, trong khi gọi, tự động thêm các thông số callback_(timestamp) với URL dịch vụ.

Tham số dấu thời gian bị xóa- bằng cách thêm cache : true. Nhưng không thể xóa tham số gọi lại.

đây là AJAX tôi gọi số-

$.ajax({ 
     type: 'GET', 
     url : "http://test.com/test/services/getFollowMeHistory/1/1/50", 
     dataType:'jsonp', 
     cache : true, 
     crossDomain : true, 
     //jsonpCallback : false, 

     error : function(XMLHttpRequest, textStatus, errorThrown) { 
      alert("Error occured while loading Loads."+textStatus); 
      } 
     }); 
}); 

nó gọi URL như- http://test.com/test/services/getFollowMeHistory/1/1/50?callback=false và đang nhận được 404 từ phía dịch vụ.

Dịch vụ của tôi đang trả về dữ liệu dưới dạng callbackMethod ({..JSON RESPONSE ...}). Vì vậy, nó sẽ tự động gọi số function callbackMethod(data) trong tập lệnh của tôi. tôi không cần tham số gọi lại đó trong URL của tôi.

Chỉ cần xóa phần ?callback=... khỏi URL

Trợ giúp Plz.

+0

Đó là JSONP, đó là những gì JSONP là. –

+0

Tham số gọi lại cho máy chủ biết những gì gọi lại để quay trở lại với dữ liệu. –

+0

từ phía dịch vụ đang trả về json as- "callbackMethod ({... json response ..})". Vì vậy, nó sẽ tự động gọi "function callbackMethod (dữ liệu)" trong kịch bản của tôi. –

Trả lời

10

Bạn nên đặt jsonp: false chứ không phải jsonpCallback: false. Bạn cũng nên đặt tùy chọn jsonpCallback thành tên gọi lại mà bạn mong muốn nhận được từ dịch vụ.

tham khảo: http://api.jquery.com/jQuery.ajax/

+0

Tôi chưa thử nghiệm nó, chỉ cần đọc các tài liệu, nhưng rõ ràng với 'jsonp: false', jQuery sẽ không vượt qua 'callback' tham số, nhưng vẫn sẽ mong đợi một phản ứng JSONP; đó là lý do tại sao nó yêu cầu tham số 'jsonpCallback' để khai báo rõ tên của hàm gọi lại để tạo, theo những gì được mong đợi từ máy chủ. – lanzz

+0

Cảm ơn nhưng đó là một cuộc gọi tên miền chéo thực sự –

+0

+1, đây chắc chắn là cách để đi nếu bạn không muốn sử dụng tham số gọi lại. –

1
  1. Nếu bạn đặt cacheing để true tức là sẽ cache đáp ứng yêu cầu , và tất cả các cuộc gọi JSONP tiếp theo sẽ không trở lại dữ liệu mới.

  2. Nếu không có hàm gọi lại JSONP là không thể sử dụng được vì không có cách nào để đọc câu trả lời . Gọi lại là toàn bộ điểm của JSONP.

  3. Máy chủ của bạn phải được thiết lập để xử lý yêu cầu JSONP. Url bạn gửi sẽ không ảnh hưởng đến phía máy khách. Vì vậy, vấn đề của bạn phải ở phía máy chủ. Đó là nơi bạn nên xử lý nó. Làm cho điều này không phải là một vấn đề jQuery.

Nếu bạn đang sử dụng một callback tùy chỉnh Hãy thử điều này, nhưng một callback tùy chỉnh là không giống như loại bỏ các callback:

jsonpCallback : "callbackMethod" 
+0

từ phía dịch vụ đang trả về json as- "callbackMethod ({... json response ..})". Vì vậy, nó sẽ tự động gọi "function callbackMethod (dữ liệu)" trong kịch bản của tôi. Tôi không cần tham số gọi lại đó. –

+0

Tôi đã cập nhật câu trả lời của mình. – Fresheyeball

Các vấn đề liên quan