2011-07-13 97 views
0

我的目標是使用Jquery調用Web服務。 我發現這個例子從這個網站: How to use jQuery to call an ASP.NET web service?從javascript調用Web服務時訪問被拒絕

我修改了它我的使用:

function InfoByDate(aUrl){ 
    var divToBeWorkedOn = '#AjaxPlaceHolder'; 
    var webMethod = 'http://MyWebService/Web.asmx/GetInfoByDates' 
    var parameters = "{'sUrl':'" + aUrl + "'}" 

    $.ajax({ 
     type: "POST", 
     url: webMethod, 
     data: parameters, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(msg) {  
      $(divToBeWorkedOn).html(msg.d); 
     }, 
     error: function(e){ 
      $(divToBeWorkedOn).html("Unavailable");    
     } 
    }); 
} 

現在我得到一個JS錯誤拒絕訪問! 我的網絡服務位於同一個域中,所以跨域不相關。 有人可以幫我解決這個問題嗎? Cheers NirNiroN

+1

web服務位於與調用它的網頁不同的域上嗎?如果是這樣,你正在觸及SOP(同源策略)問題。 –

+0

給一點信息。是對服務器的調用嗎?你可以用螢火蟲檢查它嗎?是服務器提供響應代碼或什麼也沒有執行,你只是得到像「訪問denided」沒有錯誤代碼或線信息或任何其他的js錯誤? – TheBrain

回答

0

你從哪裏打這個電話?如果你不在同一個域(即「mywebservice」),它將無法正常工作,因爲你不能進行這樣的跨域Ajax調用。如果是這種情況,我建議您查看可用的各種選項(服務器上的CORS,使用'客戶端'機器上的反向代理或JSONP)。

+0

Agian我的web服務在同一個域..這是一個權限問題? – NirNiroN

+0

聽起來很喜歡,是的。你能從其他客戶撥打網絡服務嗎?如果你還沒有,我會用SoapUI測試它。 – Ben

1

如果您使用的是JavaScript,並且您沒有從自己的域調用Web服務,那麼它將不被允許。但是,您可以使用JSONP進行跨域調用,因此請嘗試使用它。

你可以閱讀它在這裏http://en.wikipedia.org/wiki/JSONP

+0

我的web服務位於同一個域中,但我總是獲得Access的定義 – NirNiroN

0

是web服務可在同一臺服務器上?跨服務器請求不允許使用Ajax,並且您的web服務必須與您的JavaScript代碼位於相同的域中才能使其工作。

相關問題