2011-09-20 61 views
0

我在方法$.toJSON(batch)中收到錯誤,表明對象不支持此屬性或方法。如何使用$.toJASON(batch)方法傳遞批量數組?我如何在動作方法中傳遞數組對象?

$.ajax({ 
      type: 'POST', 
      contentType: 'application/json; charset=utf-8', 
      url: '@Url.Action("BatchUpdate", "Home")', 
      dataType: 'json', 
      //data: '{viewModelsBatch: '+batch+'}', 
      data: $.toJSON(batch), 
      success: function(result) { 
       //... 
       $('#jqgProducts').trigger('reloadGrid'); 
      } 
    }); 

回答

1

我與保羅Grime的同意,JSON.stringifyjson2.js的使用是更好,因爲toJSON jQuery插件。原因是JSON.stringify原生在大多數網頁瀏覽器中實現。只應包含json2.js以確保如果Web瀏覽器不支持JSON.stringify,則將使用JavaScript實現。典型的jQuery插件是純JavaScript代碼。所以序列化將是緩慢。此外json2.js的作者Douglas Crockford是JSON標準的作者,也是JavaScript語言中非常有名的專家。所以他在JavaScript中實現JSON序列化確實是最好的。

您的主要問題是另一個問題:爲什麼data: $.toJSON(batch)data: JSON.stringify(batch)無法在您的代碼中工作。問題不在於jqGrid問題,而在純粹的服務器端問題。你不會寫你在服務器端使用的技術。代碼看起來像ASP.NET MVC代碼,但目前還不清楚您使用的是哪個版本的ASP.NET MVC。如果您使用3.0版本,它應該自動工作,但在2.0版本的情況下,您需要註冊自定義JsonValueProviderFactory(請參閱here)。

+0

我使用mvc 3.0.0.0版本,我已經包含了json2.js文件,但仍然收到相同的錯誤。 :( – Siddiqui

+0

@farhan:無論如何它都是純粹的ASP.MVC問題,所以你至少應該包括你使用的'BatchUpdate'動作原型和可以用來重現你的問題的'batch'測試。 – Oleg

相關問題