2010-07-08 111 views
2

我有兩個參數(categoryName和categoryDe​​scription),我需要傳遞給使用JSON的Web服務。我找到了傳遞categoryName的語法,但無法獲得正確的語法來傳遞這兩個參數。這是代碼。傳遞JSON數據到webservice

<script src="js/jquery-1.4.1.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 

    $(document).ready(function() { 
     $('#hbtnCreateCategory').click(function(event) { 
      $.ajax({ 
       type: "POST", 
       url: "lwsServiceData.asmx/CreateHelpDeskCategory", 
       data: "{'categoryName': '" + $('#categoryName').val() + "'}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function(msg) { 
        AjaxSucceeded(msg); 
       }, 
       error: AjaxFailed 
      }); 

     }); 

     function AjaxSucceeded(result) { 
      alert(result.d); 
      $('#result').val = result.d; 
     } 

     function AjaxFailed(result) { 
      alert(result.status + ' ' + result.statusText); 
     } 

    }); 
</script> 

在此先感謝。

回答

0
data: "{'categoryName': '" + $('#categoryName').val() + "', 'categoryDescription': 'some description'}" 

,如果它需要是動態的:

data: "{'categoryName': '" + $('#categoryName').val() + "', 'categoryDescription': '" + $('#categoryDescription').val() + "'}" 
+0

我需要從 得到categoryDe​​scription <輸入ID = 「categoryDe​​scription」 類型= 「文本」/>
所以我想我需要使用類似 $( '#categoryDe​​scription')VAL(。 ) – blueDroid 2010-07-08 21:07:09

+0

是的,這正是我所建議的。 – 2010-07-08 21:12:12

+1

達林: 你的代碼工作!!我來自ASP.Net這是我第一次l贏得JSON。連接字符串仍然有點問題。根據你的樣本,我把以下數據放在一起,它不起作用。你能否檢查一下,讓我知道我犯了什麼錯誤? 「{'categoryName':'」+ $('#categoryName')。val()+「','createdBy':'jsmith'」+「','categoryDe​​scription':'」+ $(' #categoryDe​​scription')。val()+「'}」, 非常感謝。 – blueDroid 2010-07-12 14:47:26

2

試試這個:

數據: 「{類別名稱:」「 + $( '#類別名稱')VAL()+ 「',categoryDe​​scription:'」+ $('#categoryDe​​scription')。val()+「'}」,

不要忘記更新CreateHelpDeskCategory以接受兩個參數。

要添加第三個參數,使用以下命令:

數據: 「{類別名稱:」「 + + $( '#類別名稱')VAL()+ 」 'categoryDe​​scription:'「 + + $ ( '#categoryDe​​scription')VAL()+ 「」,modifiedBy: 'jsmith的'}」,

+1

艾莉森, 您的代碼在我用++替換++之後起作用。我想將第三個字符串參數傳遞給名爲「modifiedBy」的Web服務器。我使用下面的代碼,但得到一個錯誤: data:「{categoryName:'」+ $('#categoryName')。val()+「',categoryDe​​scription:'」+ $('#categoryDe​​scription')。val )+「',modifiedBy:'jsmith'」+「'}」, 非常感謝。 NC8 – blueDroid 2010-07-13 17:55:36

+0

你能解決問題嗎? – 2010-07-25 19:13:36

1

您應該使用

data: {categoryName: JSON.stringify($('#categoryName').val()), 
     categoryDescription: JSON.stringify($('#categoryDescription').val())} 

$.ajax參數其實現方法具d。函數JSON.stringify可用於將任何數據序列化爲JSON(可從http://www.json.org/js.html下載)。手動序列化不好,至少是因爲應該序列化的字符串包含必須轉義的字符的可能性(如'''或'\'參見http://www.json.org/

另請參閱我回答的另一個問題前:How do I build a JSON object to send to an AJAX WebService?

+0

Oleg, 我發現你的代碼非常易讀易懂。但是,我將它粘貼到我的代碼上,但它不起作用。 我錯過了什麼? 謝謝, NC8 – blueDroid 2010-07-13 17:23:33

+0

WS代碼: [WebMethod] public int CreateHelpDeskCategory(string categoryName,string categoryDe​​scription){DataCenterDataContext db = new DataCenterDataContext(); 嘗試{ HelpDeskCategory貓=新HelpDeskCategory { 類別名稱= categoryName.Trim(), CategoryDe​​scription = categoryDe​​scription.Trim(), CreatedDate = DateTime.Now, }; db.HelpDeskCategories.InsertOnSubmit(cat); db.SubmitChanges(); return 1; } catch(例外) { return 0; } – blueDroid 2010-07-13 17:26:12

+0

我在代碼中看不到'[ScriptMethod(ResponseFormat = ResponseFormat.Json)]'屬性。你使用它或者在web.config中設置相同的行爲(它可能在.NET 4.0中)? – Oleg 2010-07-13 17:57:46