通过JS、DataType Json调用Web服务
Web service call through JS, DataType Json
我试图通过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>
WebService名称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;
}
}
每次运行时都会显示"错误"框。请帮我渡过难关。谢谢。
您使用Web服务的绝对URL。您应该使用一个相对的服务器路径,如以下片段所示:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
data: "{ your: 'data' }",
dataType: "json",
url: "WebService1.asmx/sum",
success: function (data) {
alert(data); //use your data object
}
});
您的URL错误。它应该是这样的形式:
url: "/WebService1.asmx/sum"
为了确保它总是指向正确的路径,你可以这样做:
url: '<%=ResolveClientURL("~/WebService1.asmx/sum%>")'
此外,在你的成功处理程序中,你不需要做:
var results = eval('(' + data.d + ')');
你可以简单地做:
var result= data.d;
最后,在WebMethod中,您根本不需要使用JavascriptSerializer。你可以简单地做:
int sum = ...
return sum;
响应已为JSON格式。无需对其进行两次序列化。
url: "C:/Users/hp/Documents/visual studio 2010/Projects/WebApplication3/WebApplication3/WebService1.asmx/sum",
这需要是一个HTTPURL,并且运行JavaScript的HTML文档需要在同一个源上。
data: "{'a':'" + $('input[id$=Text1]').val() + "','b':'" + $('input[id$=Text2]').val() + "'}",
您的JSON无效。字符串必须用"
字符分隔,而不是用'
字符分隔,用户输入可能很容易破坏它。
不要通过将字符串混合在一起生成JSON。正确地使用内置的功能。
data: JSON.stringify({
a: $('input[id$=Text1]').val(),
b: $('input[id$=Text2]').val()
}),
相关文章:
- Ajax不调用Web服务
- ajax 可以使用绝对 url 来调用 Web 服务吗?
- 从javascript或Jquery调用Web服务
- 在循环中通过JavaScript调用web服务
- 当我使用java脚本调用web服务时,模拟器上没有得到响应
- 无法从webview调用web服务
- 如何在对用户控件执行操作后调用 Web 服务
- 从jQuery调用Web服务失败适用于python
- 在 jquery 的 pageshow 事件中调用 Web api
- 如何在 asp.net 中更改文本框的事件时调用Web方法
- 如何从外部项目调用 Web 方法
- 从用户控件调用 Web 服务时 asp.net 页为 null
- 将 Javascript .js(调用 Web 服务)异步加载到页面中
- 使用 nodejs 调用 Web 服务
- 在 JQuery 中调用 Web 服务并将返回的 Json 分配给 JS 变量
- j查询更改下拉列表调用 Web 服务以加载选项
- 从 JavaScript 调用 Web 服务的特定方法
- 序列化的 JSON 在调用 Web 服务时行为奇怪
- HTML Select 字段通过 ajax 调用 Web 服务
- 从 HTML 调用 Web 服务