我有一个jquery ajax调用asp.net web服务,但它无法正常工作。我收到了一个错误:
isValid未定义。
我设置了一个断点,发现代码永远不会到达Web服务。 Jquery的:
<script src="../jquery-1.7.2.min.js" type="text/javascript"></script>
<script>
function ValidateUserName() {
var isValid;
$.ajax({ type: "POST",
url: "UserNameWebService.asmx/ValidateUserName",
data: "{'strUsername': '" + $("#<%=TextUserName.ClientID%>").val() + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function (data) {
isValid = data;
}
});
return isValid;
}
</script>
网络服务代码:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class UserNameWebService : System.Web.Services.WebService
{
[WebMethod]
public bool ValidateUserName(string strUsername)
{
\\ then return something by logic
谢谢。
答案 0 :(得分:3)
在Ajax完成之前,您将返回isValid
。
最好的办法是编写一个在完成Ajax调用时调用的函数。
$.ajax({ type: "POST",
url: "UserNameWebService.asmx/ValidateUserName",
data: "{'strUsername': '" + $("#<%=TextUserName.ClientID%>").val() + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function (data) {
RenderResult(data);
}
});
然后在这里处理返回的数据。
function RenderResult(data){
// handle the returned result here
var isValid = data;
}