2010-07-21 36 views
28

Tôi hiểu rằng jsonp là một kỹ thuật để có được cùng một chính sách gốc. Về cơ bản, bạn đề cập đến điểm cuối máy chủ phục vụ json của bạn trong một thẻ tập lệnh, bởi vì các thẻ script được miễn khỏi chính sách SO.JSONP có yêu cầu sửa đổi máy chủ không?

Câu hỏi của tôi là: Giả sử một máy chủ có điểm cuối phục vụ json, có bất kỳ sửa đổi nào cần thiết trên máy chủ để sử dụng jsonp trong ứng dụng khách không?

Tôi nghĩ rằng không có, nhưng muốn chắc chắn ....

Trả lời

33

Vâng, JSONP là hơi khác nhau khi nó ám, vì vậy máy chủ của bạn cần hỗ trợ nó.

JSON trông như thế này:

{ "name": "value" } 

Trong khi JSONP trông như thế này:

functionName({ "name": "value" }); 

Nếu bất cứ điều gì bạn đang sử dụng hỗ trợ nó, bạn đang được bảo hiểm, nhưng nó không giống như hỗ trợ chỉ JSON. Khi máy chủ nhận được một yêu cầu, ví dụ: http://example.com/json?callback=functionName, phía trên là những gì bạn nên làm, vì nó trông như thế trong trang là thế này:

<script type="text/javascript" src="http://example.com/json?callback=functionName"></script> 

Điều này có nghĩa cái gì mà chạy nhu cầu để được trả lại, như một minh hoạ, đây là hợp lệ:

<script type="text/javascript"> 
    functionName({ "name": "value" }); 
</script> 

Nếu máy chủ của bạn không hỗ trợ JSONP nó sẽ có hiệu quả là thế này:

<script type="text/javascript"> 
    { "name": "value" } 
</script> 

... và bạn sẽ nhận được lỗi cú pháp vì đó không phải là JavaScript hợp lệ.

+1

và mã js của bạn phải triển khai functionName? Liệu nó cần phải đánh giá các json để có được các đối tượng js? – hvgotcodes

+0

@hvgotcodes - Có, máy khách có chức năng đó (ví dụ jQuery tạo một động theo mặc định). JSON của nó được truyền cho hàm (JSON là ký hiệu chữ của đối tượng hợp lệ, chỉ là một tập hợp con của nó), do đó không có 'eval()' cần phải được thực hiện. –

+1

tôi không hiểu tại sao bạn không cần phải đánh giá nó. Bất kể jsonp, không nhất js thư viện eval json trở lại thông qua xhrs để có được các đối tượng js thực tế json đại diện? – hvgotcodes

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