2012-12-08 130 views
0

我想用PHP和jQuery使用c#web服務。下面的代碼是 將數據與$ .ajax一起發佈到php代碼中。但在i = url內部,我無法從Web服務獲取任何數據。如何才能幫我開發此代碼在php中使用c#web服務(asmx)

$.ajax({ 
      type: "POST", 
      url: "http://www.w3schools.com/webservices/tempconvert.asmx/CelsiusToFahrenheit", 
      dataType: 'jsonp', 
      success: function(data) {alert('ok')}, 
      error : function(e) {alert('error')} 
     }); 

回答

1

您正在違反same origin policy。您無法將AJAX請求發送到遠程域。如果您想使用AJAX從JavaScript中使用ASMX Web服務,則此服務必須與包含此腳本的頁面位於同一個域中。

您似乎在請求中指定了dataType: 'jsonp',但如果遠程ASMX服務未配置爲支持JSONP,則這沒有任何意義。

作爲一種可能的解決方法,您可以編寫一個新的PHP腳本,充當本地和遠程域之間的橋樑,然後將AJAX請求發送到PHP腳本。然後,該腳本將通過發送一個HTTP請求調用遠程Web服務並返回結果:

$.ajax({ 
    type: 'POST', 
    url: '/CelsiusToFahrenheit.php', 
    success: function(data) { alert('ok') }, 
    error: function(e) { alert('error') } 
}); 

CelsiusToFahrenheit.php腳本,你需要寫那麼將調用委託給遠程域調用實際ASMX服務。有關於如何使用PHP調用ASMX Web服務的 教程。這裏有一個:Call asp.net web service from PHP with multiple parameters