Ajax POST永远不会被触发,既不成功也不错误

时间:2015-06-21 18:44:31

标签: javascript c# asp.net ajax

使用AJAX我想要做的就是当我点击"选择"按钮,来自SQL DB的所有相关信息将分配给相关标签。 问题是下面的AJAX代码($ .ajax)永远不会被触发(既不成功也不错误)。 alert(res [0])在屏幕上显示真实结果(因此clientid参数为true)。

这来自Asp.Net中的WebApplication项目

       function BindClientSummaryForm() {
            var skillsSelect = document.getElementById('<%= ddlSFoundClients.ClientID %>');
            var selectedText = skillsSelect.options[skillsSelect.selectedIndex].text;
            var res = selectedText.split('-');
            document.getElementById('<%= hiddenClientID.ClientID %>').value = res[0];
            alert(res[0]);
            $.ajax({
                type: "POST",
                url: "Default.aspx/GetClientSummaryData",
                contentType: "application/json;charset=utf-8",
                data: "{ 'clientid': " + res[0] + "}",
                dataType: "json",
                success: function (data) {
                    alert("deneme");
                    document.getElementById('<%= lblClientNameSurnameD.ClientID %>').innerHTML = data.d.Firstname + " " + data.d.Lastname;
                    document.getElementById('<%= lblDateOpenedD.ClientID %>').innerHTML = data.d.DateFileOpened;
                    document.getElementById('<%= lblCityD.ClientID %>').innerHTML = data.d.City;
...
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    alert("Error occured while filling ClientSummary part.");
                }
            });
            return false;
        }
<asp:Button runat="server" CssClass="btnSelect fieldButton" ID="btnSSelect" Text="Select"  OnClientClick="return BindClientSummaryForm()"></asp:Button>

代码隐藏

[WebMethod]
public static MyClient GetClientSummaryData(String clientid) //GetData function
{
   ...
   return client;
}

调试器永远不会掉到c#中的GetClientSummaryData(clientid)方法。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

尝试在客户端服务器两者上将content-type的值更改为text/plain,然后使用eval ('('+data+')')在成功函数中。

我知道这是不正确的,因为服务器响应是json,但在我发生同样的事情时我发现(我不知道原因)当你将内容作为content-type: application/json返回时在服务器上,jQuery不会调用成功函数。

答案 1 :(得分:0)

如何将POST指定为请求类型?如果你使用GET似乎会更自然(即使方法名称告诉我们)。

此外,我不确定这种语法data: "{ 'clientid': " + res[0] + "}",因为我更喜欢在单独的文件中编写脚本。无论如何,您可以尝试编写data: { clientid: res[0] }而不是