使用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)方法。
感谢您的帮助。
答案 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] }
而不是