2009-12-31 183 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错误。