2011-04-17 21 views
4

我在路過一個JavaScript對象的webmethod在asp.net的問題。從jQuery的AJAX傳遞JavaScript對象,以網絡方法自定義序列

JavaScript對象是:

var Materials = new Object(); 
function() { 
      Materials.MaterialName = $('[id*="txtMaterialName"]').val(); 
      Materials.QuantityType = $('[id*="txtquantity"]').val();    
      AddNewMaterialToDb(Materials); 
      $(this).dialog('close'); 
     } 

這裏的材料爲對象,現在我想將它傳遞給這需要類型的參數的web方法。

現在我有兩個選項:

  1. 要麼定義的webmethod採取MaterialEntity類的參數,它會自動理解從AJAX方法
  2. 通過JSON字符串創建將WebMethod拿JSON字符串並序列化爲MaterialEntity類

如何在使用jQuery AJAX時做到這一點?

我的意思是使任何上述兩個條件得到滿足的是具體的,我應該如何傳遞jQuery對象作爲jQuery的AJAX數據?

功能的jQuery AJAX:

function AddNewMaterialToDb(materials) { 

$.ajax({ 
    type: 'POST', 
    contentType: "application/json; charset=utf-8", 
    url: 'Services/Service.asmx/AddNewMaterial',  
    data :'{"Materials":"' + JSON.stringify(materials).replace('"', '\\\"') + '"}', 
    dataType: "json", 
    success: function(data, textStatus) { 
     if (textStatus == "success") { 
      if (data.d == true) { 
       alert('New Item Added'); 
      } 
     } 
    }, 
    error: function(data, textStatus) { 
     alert('An error has occured retrieving data!'); 
    } 
}); 
} 
+0

也許你無法通過JS對象。 – 2011-04-17 04:58:56

+0

@experimentX我知道......我其實是,如果我可以將其轉換成JSON.stringify方法的JSON格式。然後通過它..但不知何故,我得到錯誤。我已經使用了代碼,請檢查 – Joy 2011-04-17 05:03:05

+0

看看我已經編輯到下面 – 2011-04-18 12:56:57

回答

-1

你可以做這樣的事情:

$.ajax({ 
    type: 'POST', 
    contentType: "application/json; charset=utf-8", 
    url: 'Services/Service.asmx/AddNewMaterial',  
    data : { name: materials.MaterialName, quantity: materials.QuantityType } , 
    success: function(data, textStatus) { 
     if (textStatus == "success") { 
      if (data.d == true) { 
       alert('New Item Added'); 
      } 
     } 
    }, 
    error: function(data, textStatus) { 
     alert('An error has occured retrieving data!'); 
    } 
}); 

現在,在您的asp.net的Web方法,你可以簡單的使用Request.Form["name"]拿到材料名稱和Request.Form["quantity"]獲取數量類型。這樣你的web方法就會變得通用,你不必將任何參數傳遞給你的web方法。

+0

我的回答這個問題是我可以隨時通過該鏈接。但參數應該是我的webmethod中的單個字符串或自定義類「MaterialEntity」。所以我真的不能這樣做,因爲這顯然會給我提供我必須爲參數聲明多個變量的情感。所以這不是一個真正可行的解決方案。正因爲這個原因,我只需要傳遞一個JSON字符串或JSON對象系列化,我可以在以後任何需要的自定義對象或反序列化接受爲自定義對象的JSON字符串 – Joy 2011-04-17 05:22:16

2

請查看是否this答案幫助。特別注意服務類和服務方法所具有的所有屬性。

編輯:This文章有一些提示,這個問題可以用

+0

那是一個很好的鏈接...感謝那個。我會用它作爲未來的參考。我已經解決了這個問題。 :) – Joy 2011-04-20 03:53:12

+0

很高興知道它幫助... :) – 2011-04-20 15:17:52

相關問題