我试着通过JS调用Web服务,但无论如何它都没有得到调用。我试着做2个数字的和。
页面包含3个textbox
,其文本硬编码设置为:
<form id="form1" runat="server">
<div>
<asp:TextBox ID="Text1" Text="5" runat="server">
</asp:TextBox>
<asp:TextBox ID="Text2" Text="2" runat="server">
</asp:TextBox>
<asp:TextBox ID="Text3" runat="server">
</asp:TextBox>
</div>
</form>
我的代码如下:
<script type="text/javascript">
$(document).ready(function () {
debugger;
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "C:/Users/hp/Documents/visual studio 2010/Projects/WebApplication3/WebApplication3/WebService1.asmx/sum",
data: "{'a':'" + $('input[id$=Text1]').val() + "','b':'" + $('input[id$=Text2]').val() + "'}",
dataType: "json",
success: function (data) {
alert(data);
var results = eval('(' + data.d + ')');
if (results == "success") {
$('input[id$=Text3]').val(data);
//$('span[id$=lblErr]').hide();
}
else {
$('span[id$=lblmsg]').hide();
// $('span[id$=lblErr]').show();
}
},
error: function () {
alert('Error');
}
});
});
</script>
Web服务名称WebForm1.aspx
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
public string sum(string a, string b)
{
string json = "";
int sum = Convert.ToInt32(a) + Convert.ToInt32(b);
System.Web.Script.Serialization.JavaScriptSerializer oSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
json = oSerializer.Serialize(sum);
return json;
}
}
每次运行都显示错误框。请帮助我通过它。谢谢。
3条答案
按热度按时间k75qkfdt1#
您使用的是Web服务的绝对URL。您应该使用相对服务器路径,如以下代码片段所示:
xuo3flqw2#
您的URL错误。它应该是以下格式:
为了确保它始终解析到正确的路径,您可以改为执行以下操作:
此外,在您的成功处理程序中,您不需要执行以下操作:
您可以简单地执行以下操作:
最后,在WebMethod中,您根本不需要使用Javascript序列化程序。您只需执行以下操作:
响应已经是JSON格式。不需要序列化它两次。
0md85ypi3#
这需要是一个HTTP URL,运行JavaScript的HTML文档需要位于the same origin上。
您的JSON无效。字符串必须使用
"
字符分隔,而不是使用'
字符分隔,用户输入很容易将其断开。不要通过将字符串混合在一起来生成JSON。使用内置函数可以正确地为您完成这一任务。