【问题标题】:Ajax post errorAjax 发布错误
【发布时间】:2009-12-31 08:39:19
【问题描述】:

我想使用 ajax 将数据发布到 Web 服务。有我的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";
            }
        }
    }

我的网络服务功能的代码在这里:

 [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 服务中的函数上有一个断点,但调试永远不会去那个断点。我从浏览器粘贴了 web 服务的 url,但可能是 url 错误。当我运行项目时,我有 3 个警报。 第一个单元格的文本是正常的。第二个警报是成功,最后一个警报是错误。我想将参数发送到 f_HastinAlisLabTahilleri 和用户返回数据集。我该怎么做?

提前致谢

【问题讨论】:

    标签: c# asp.net javascript ajax jquery


    【解决方案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 请求和服务器响应,并将它们发布到 StackOverflow 以方便调试。

    【讨论】:

      【解决方案2】:

      您不能在 Web 服务代码中设置断点,即,即使 IDE 也不允许您调试 Web 服务代码……这是 VS.Net IDE 自成立以来的旧遗产…… . 让我们看看它是否在 VS 2010 中得到解决。

      【讨论】:

      【解决方案3】:

      您在 JQuery 脚本中指定的 url 不等于 c# 代码中的函数名称。是不是重点。 url 中的 *f_HastaninAktarilacakAlislabTestleri* 和 c# 代码中的 *f_HastinAlisLabTahlilleri*。这种问题的一些原因可能是错误的 url 或客户端请求的参数列表与服务器端方法或操作的参数列表之间的差异。

      【讨论】:

        猜你喜欢
        • 2018-11-26
        • 1970-01-01
        • 1970-01-01
        • 2011-05-21
        • 2017-10-20
        • 2015-06-19
        • 2017-02-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多