2009-12-31 182 views
0

我想用ajax將數據發佈到Web服務。還有就是我的Ajax代碼:Ajax發佈錯誤

function Looping() { 
     var Grid = document.getElementById("<%= gvHastalar.ClientID %>"); 
     var Row; 
     var Cell; 
     if (Grid.rows.length > 2) { 
      for (i = 1; i < Grid.rows.length - 1; i++) { 
       Row = Grid.rows[i]; 
       Cell = Row.cells[3]; 
       alert(Cell.innerHTML); 
       var html = $.ajax(
       { 
        type: "POST", 
        url: "http://localhost:7753/HastaTahlilUyariServisi.asmx/f_HastaninAktarilacakAlislabTestleri", 
        data: "{_sTcKimlikNo:" + Cell.innerHTML + ",_iKlinikKodu:18001,_bAy:12,_iYil:2009}", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: alert('success'), 
        error: alert('error') 
       } 
       ).responseText; 
       Row.style.backgroundColor = "#D3EFD1"; 
      } 
     } 
    } 

而且我的web服務功能的代碼是在這裏:

[WebMethod] 
    [SoapHeader("_ticket", Direction = SoapHeaderDirection.In)]//SoapHeaderDirection.Out 
    public DataSet f_HastaninAlisLabTahlilleri(string _sTcKimlikNo, int _iKlinikKodu, byte _bAy, int _iYil) 
    { 
     try 
     { 
      string QSelect = 
           @"SELECT * FROM [V_EUCLID_SONUC] 
           WHERE MONTH(KAYITTARIHI) = " + _bAy + @" 
            AND YEAR(KAYITTARIHI) = " + _iYil + 
            AND TCKIMLIKNO = '" + _sTcKimlikNo + @"'"; 

      return dbA.ExecuteDataSet(CommandType.Text, QSelect); 
     } 
     catch (Exception ex) 
     { 
      throw (ex); 
     } 
    } 

上有功能的破發點,這是在Web服務,但調試再也不去那破發點。我從瀏覽器中粘貼了webservice的url,但可能是url不對。當我運行項目時,我有3個警報。 First Cell的文本正常。第二次提醒是成功,最後一次提醒是錯誤。我想發送參數給f_HastaninAlisLabTahlilleri和用戶返回數據集。我怎樣才能做到這一點?

在此先感謝

回答

1

以下是關於你的代碼中的幾句話:

  1. successerror有回調函數,它們應該被定義像這樣:

    success: function(data) { alert('success'); }, 
    error: function(XMLHttpRequest, textStatus, errorThrown) { alert('error'); } 
    
  2. ASMX Web服務使用SOAP默認情況下,除非你ScriptServiceAttribute在這種情況下JSON可以用來調用方法進行裝飾。從代碼中不清楚Web服務是否使用此屬性進行裝飾。
  3. 當你傳遞參數,你需要對其進行編碼,使用JSON. stringify而不是連接字符串的:

    data: JSON.stringify({_sTcKimlikNo: Cell.innerHTML, 
             _iKlinikKodu: 18001, 
             _bAy: 12,_iYil: 2009}); 
    

使用FireBug檢查網絡AJAX請求和服務器響應,並張貼在計算器上,以方便調試。

0

你不能把一個破發點中的Web服務代碼,即連IDE不會讓ü調試Web服務代碼....這是一個古老的遺產VS.淨IDE自成立以來...讓我們看看如果在VS 2010年解決

+0

什麼?不真實的。有關說明,請參閱http://msdn.microsoft.com/en-us/library/0twaftwz.aspx。 – 2009-12-31 14:21:59

0

您在JQuery腳本中指定的url不等於c#代碼中函數的名稱。難道不是重點嗎? * f_HastaninAktarilacakAlislabTestleri *在URL和* f_HastaninAlisLabTahlilleri *在C#代碼。造成這種問題的一些原因可能是客戶端請求的參數列表與服務器端方法或操作的參數列表之間的url或deference錯誤。