2010-07-08 66 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