2009-04-07 81 views
3

jquery ajax代碼可以從另一個域名或其他網站調用web服務嗎?
像這樣:
可以jquery ajax調用外部web服務?

$.ajax({ 
      type: "POST", 
      url: "http://AnotherWebSite.com/WebService.asmx/HelloWorld", 
      data: "{'name':'" + $('#price').val() + "'}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(msg) {alert(msg);} 
      }); 


,我應該如何配置此WebService?

回答

7

可以使用JSONP做跨域請求。使用jQuery你可以用$上傳.json功能並指定一個回調的網址像這樣使JSONP請求:

&callback=? 

其實,你需要的是問號作爲參數值的方式,帕拉姆名稱可以是任何東西。

唯一的缺點是,你可以將這個請求必須支持JSONP

對於更深入的信息的服務器看到這個博客帖子大約使JSONP工作與紐約時報JSON API:

http://notetodogself.blogspot.com/2009/02/using-jquery-with-nyt-json-api.html

0

其他域發出請求,禁止因Same origin policy的大多數瀏覽器。

少數的例外是

  • 用戶端擴展,像GreaseMonkey
  • 從腳本標籤的JavaScript包括
  • 的Adobe Flash應用程序正確配置服務器
+0

我沒有代表進行編輯,但你應該Greasemonkey的正確拼寫。 – Benson 2009-04-07 19:17:43

0

沒有,請求來自web服務器的東西不是來自你的代碼的東西,而是所謂的Cross Site Scripting (XSS)攻擊的基礎。因此,這種能力是被禁止的。有辦法解決這個問題,但他們充其量只能算是黑客。

一個我聽說過的最大約是寫一個Flash應用程序,使一個TCP連接到有問題的服務器。

0

我們通常做的是有你的jQuery打電話給你的服務器上的Web服務,並具有Web服務與外部Web服務通信。不是最喜歡的方法,但它的工作原理。

1

您需要使用JSONP調用。最後兩段在這page。回顧一下基礎知識。