无法让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字符串文字清楚显示

+0

请问您的Web服务支持JSON参数?这不完全是一个普遍的事情。 – 2012-08-03 21:19:21

正如你已经使用双引号的参数,你应该使用单引号:

data = '{"deviceId":"e9b3f993-7ca1-442b-a5c2-001ab86e1af4","opid":202,"remarks":"fefawef"}' 
+0

我正要说同样的话。它在世界上的表现甚至足以说明它找不到具有如此明显语法错误的'deviceId'。 – 2012-08-03 21:08:12

+0

感谢您的回答,但事实并非如此。 'data'实际上是我复制粘贴到*而不检查语法的函数调用的结果。我已经更新了这个问题来解决这个问题。 – 2012-08-03 21:11:49

+0

@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"}' }; 
+0

这是我在查看代码时注意到的第一件事。 – Gromer 2012-08-03 21:18:54

+0

这样做会产生一个不同的错误信息:'无效的JSON基元:e9b3f993-7ca1-442b-a5c2-001ab86e1af4.' – 2012-08-03 21:20:02

+0

这似乎表明它期望'deviceId'是一个JSON值?这没有什么意义......我们无法真正帮助您找出来自web服务的错误消息,我们并不真正了解任何有关... – 2012-08-03 21:24:39