2009-10-25 44 views
3

JQuery的似乎當試圖通過字母數字參數,像這樣被賦予了一個錯誤:JQuery ajax調用不會使用字母數字參數!

  $.ajax({ 
       type: "POST", 
       url: "Default.aspx/AjaxTest", 
       data: "{eventID:9a5}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function(msg) { 
        alert(msg.d); 
       }, 
       error: function(e) { 
        alert("Event could not be added to calendar"); 
       } 
      }); 

當上述方法被調用時,錯誤回調被調用。但是,當我將eventID參數更改爲純數值時,它可以正常工作並調用成功回調。我想將字母數字值傳遞給服務器方法,這似乎不起作用。任何幫助,將不勝感激。

Ahmed

回答

1

我只是學會了如何解決這個問題。原來我得到一個JSON錯誤消息:「無效的JSON基元」。我必須在我的字符串參數周圍添加額外的單引號,以便JSON在將其反序列化時能夠理解它是一個字符串。我在我的字母數字數據周圍添加了單引號,以便JSON明白它是一個字符串。這是我的代碼如何工作:

 $.ajax({ 
      type: "POST", 
      url: "Default.aspx/AjaxTest", 
      data: "{eventID:'9a5'}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(msg) { 
       alert(msg.d); 
      }, 
      error: function(e) { 
       alert("Event could not be added to calendar"); 
      } 
     }); 

謝謝所有反正。

4

難道你不應該像傳統的Javascript字典那樣傳遞數據嗎?

$.ajax({ 
... 
data: {"eventID": "9a5", "SomeNumericField": 25} 
... 
}); 

(延續:。不要把周圍的數據報價我敢肯定,它不應該是這樣的一個字符串)

+0

此外,請檢查您發佈數據的URL是否接受該參數的非數字值。它可能會返回一個錯誤。 – 2009-10-25 13:14:14

+0

@Bartek:當我嘗試過,它不適用於數字和字母數字,但它之前的數值正常工作。 @Steve:我有一個asp.net webmethod接受一個字符串參數。這應該不夠嗎? – 2009-10-25 13:22:42