2012-08-03 220 views
0

看來這應該是一件簡單的事情,但我無法調用我的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

回答

2

正如你已經使用雙引號的參數,你應該使用單引號:

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

我正要說同樣的話。它在世界上的表現甚至足以說明它找不到具有如此明顯語法錯誤的'deviceId'。 – 2012-08-03 21:08:12

+0

感謝您的回答,但事實並非如此。 'data'實際上是我複製粘貼到StackOverflow而不檢查語法的函數調用的結果。我已經更新了這個問題來解決這個問題。 – 2012-08-03 21:11:49

+0

@DanielAllenLangdon不客氣,你有沒有試過dbaseman的解決方案? – undefined 2012-08-03 21:17:42

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