无法让webservice识别我的参数

时间:2012-08-03 21:02:25

标签: jquery ajax webmethod pagemethods

这似乎应该是简单的事情,但我不能调用我的Web服务调用。这是我的代码:

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       

乍一看,您可能会问是否更适合使用POST而不是GET。它可能会,但我正在使用GET来避免讨厌的Internet Explorer 12030错误问题。

我的网络方法的签名如下所示:

[WebMethod]
[ScriptMethod(UseHttpGet = true)] 
public static string MyMethod(string deviceId, int opid, string remarks)

最后,我看到的错误是Invalid web service call, missing value for parameter: deviceId。我不明白问题是什么。传递的JSON字符串文字中明确指出了deviceId

2 个答案:

答案 0 :(得分:2)

由于您使用双引号作为参数,因此应使用单引号:

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

答案 1 :(得分:2)

这可能不是唯一的问题,但您的数据 Javascript无效。根据{{​​3}},这应该是查询字符串或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"}' };