无法让webservice识别我的参数
看来这应该是一件简单的事情,但我无法调用我的web服务调用。这里是我的代码:无法让webservice识别我的参数
var data = '{"deviceId":"e9b3f993-7ca1-442b-a5c2-001ab86e1af4","opid":202,"remarks":"fefawef"}';
$.ajax({
url: 'MyPage.aspx/MyMethod',
data: data,
type: 'GET',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response) {
// Do stuff
},
error: function(xhr) {
alert(xhr.responseText);
}
}); // end $.ajax
乍一看,你可能会问,是否有更合适,而不是使用GET POST。它可能会,但我使用GET来避免讨厌的Internet Explorer 12030错误问题。
我的Web方法的签名如下所示:
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public static string MyMethod(string deviceId, int opid, string remarks)
最后,我看到的错误是Invalid web service call, missing value for parameter: deviceId
。我看不出问题会是什么。 deviceId
在传入的JSON字符串文字清楚显示
正如你已经使用双引号的参数,你应该使用单引号:
data = '{"deviceId":"e9b3f993-7ca1-442b-a5c2-001ab86e1af4","opid":202,"remarks":"fefawef"}'
我正要说同样的话。它在世界上的表现甚至足以说明它找不到具有如此明显语法错误的'deviceId'。 – 2012-08-03 21:08:12
感谢您的回答,但事实并非如此。 'data'实际上是我复制粘贴到*而不检查语法的函数调用的结果。我已经更新了这个问题来解决这个问题。 – 2012-08-03 21:11:49
@DanielAllenLangdon不客气,你有没有试过dbaseman的解决方案? – undefined 2012-08-03 21:17:42
这可能不是唯一的问题,但你的数据 Javascript无效。根据JQuery docs,这应该是查询字符串或JSON对象(不是JSON字符串)。试试这个:
var data = { deviceId: "e9b3f993-7ca1-442b-a5c2-001ab86e1af4",
opid: 202,
remarks: "fefawef"
};
编辑
如何:
var data = { d: '{"deviceId":"e9b3f993-7ca1-442b-a5c2-001ab86e1af4","opid":202,"remarks":"fefawef"}' };
这是我在查看代码时注意到的第一件事。 – Gromer 2012-08-03 21:18:54
这样做会产生一个不同的错误信息:'无效的JSON基元:e9b3f993-7ca1-442b-a5c2-001ab86e1af4.' – 2012-08-03 21:20:02
这似乎表明它期望'deviceId'是一个JSON值?这没有什么意义......我们无法真正帮助您找出来自web服务的错误消息,我们并不真正了解任何有关... – 2012-08-03 21:24:39
请问您的Web服务支持JSON参数?这不完全是一个普遍的事情。 – 2012-08-03 21:19:21