2009-12-30 141 views
0

我正在嘗試將數據發佈到Web服務。而這項服務在同一個解決方案的不同項目中。 該項目名稱爲WebServices,Web服務名稱爲HastaTahlilUyariService.asmx。 我的代碼是在這裏:Ajax發佈Web服務url錯誤

$.ajax(
       { 
        type: "POST", 
        url: "WebServices/HastaTahlilUyariService.asmx/f_HastaninAktarilacakAlislabTestleri", 
        data: "{_sTcKimlikNo:" + Cell.innerHTML + ",_iKlinikKodu:18001,_bAy:12,_iYil:2009}", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: function(msg) { 
         alert(msg); 
        }, 
        error: function(msg) { 
         alert('hata'+ msg); 
        } 
       } 
       ); 

我認爲我的網址是錯誤的。我怎樣才能給正確的網址。

在此先感謝...

+0

如果您提供完全限定的URL,情況是否會改善?你對這個網址有什麼反應?可以使用FireBug之類的頭部監視器來查看。 – spender 2009-12-30 14:19:51

回答

0

首先:建立你的web服務,並將其配置爲下IIS配置管理器類似http://localhost/services/myservice.asmx運行。打開IIS管理器,右鍵單擊網站 - >新建虛擬目錄;並導航到您的web服務所在的文件夾。將該虛擬目錄命名爲services

然後用它的完全合格的URL(如http://localhost/myservice.asmx/function)來調用服務。

最簡單的方法做你正在嘗試做的(嗯,我猜)

創建要在您的代碼隱藏調用像

[WebMethod] 
public static object MethodToCallFromAjax(string argument) 
{ 
    //do something 
    return result; 
} 

方法然後添加一個ScriptManager到你的aspx頁面;並設置爲enablePageMethods=true。然後從JavaScript調用你的方法,如:

PageMethods.MethodToCallFromAjax("argument value", function(msg) { alert(msg); }); 

編輯:刪除有關JSON和ASMX一些東西,這是不正確的:-)

+1

不,完全可以通過jquery使用asmx webservices。我一直這樣做,而且我也不是很獨特。 – 2009-12-30 14:26:06

+0

編輯問題以反映上述內容 – 2009-12-30 14:29:47

+0

jQuery比asp.net自帶的內置庫更高效。我會建議使用它。 – Ariel 2009-12-30 16:45:26

0

您可能需要您的網址更改爲一些與工作不」 t相對於你現在的位置,比如url: '/WebServices/...(初始斜槓...)

使用firefox的firebug插件,你可以檢查AJAX回調並查看請求了哪個確切的URL。您可以複製該URL,並且您應該能夠將瀏覽器指向asmx的URL(即沒有最後一個參數,即方法名稱)。

除此之外,您需要確保您已取消註釋asmx代碼文件頂部幾行中的ScriptService屬性。它在默認情況下被註釋掉了,但它需要在那裏允許jQuery訪問web服務。

-1

另一個需要研究的選項是內置在瀏覽器中的標準XMLHttpRequest對象(對於IE 6,您必須使用具有相同名稱的ActiveX對象)。它使得調用XML服務變得非常容易,儘管你最終不得不自己設置一些SOAP格式。

Wikipedia entry for XMLHttpRequest