0

看起来这应该很简单,但我无法调用我的 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 错误问题。

我的 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 字符串文字中明确表示。

4

2 回答 2

2

这可能不是唯一的问题,但您的数据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"}' };
于 2012-08-03T21:08:09.517 回答
2

由于您对参数使用了双引号,因此您应该使用单引号:

data = '{"deviceId":"e9b3f993-7ca1-442b-a5c2-001ab86e1af4","opid":202,"remarks":"fefawef"}'
于 2012-08-03T21:04:23.730 回答