2012-11-19 65 views
1

我在訪問.net webmethod從與存儲Web服務不同的服務器上遇到問題。.Net Web方法訪問

$.ajax({ 
    type: "POST", 
    url: "WebService.asmx/login", 
    data: "{'username':'test'," + "'password':'test'}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (msg) { 
     console.log(msg); 
    }, 
    error: function (response) { 
     console.log(response); 
    } 
}); 

當執行上述jQuery時,該方法按預期運行。如果我在其他服務器上運行相同的代碼並將url更改爲存儲位置,則webmethod不會顯示執行。 Firebug顯示錯誤,但我無法確定原因。如果我導航到WebService.asmx該方法列出,但我似乎無法訪問它。

+1

請....永遠不要在你的生活中使用字符串方法創建JSON。總是使用'JSON.stringify()'! – ThiefMaster

+0

您發送無效的JSON(JSON需要雙引號)。這可能會破壞事情。 – ThiefMaster

回答

0

如果我運行在不同的服務器上相同的代碼,並更改URL,以存儲在何處?

如果您要改變它到另一個域上的URL,它將違反瀏覽器的跨域沙箱而不起作用。您所做的調用需要與服務頁面/腳本的域名相同。

+0

這很明顯 - 不能相信我沒有想到這一點。一個JavaScript錯誤本來會很好,這樣我可以節省幾個小時的頭部劃痕。謝謝。在javascript之外,我應該可以從其他服務器運行此方法嗎? – user1836732

+0

是的,假設會話狀態等事情不在圖片中。 – lukiffer

+1

儘管我沒有意識到使用「ASMX」Web服務的任何實現,但它只需要幾個WCF配置更改(僅限.NET 4.0 +)來運行支持跨域調用的JSONP Web服務。 http://msdn.microsoft.com/en-us/library/ee834511.aspx – Snixtor