Ajax jquery传递多个参数Web服务

 $('#btnregister').click(function () { $.ajax({ type: "POST", contentType: "application/json; charset=utf-8", url: "fetchusers.asmx/RegUsers", data: "{ username: '" + $("#txtuser").val() + "name: '" + $("#txtname").val() + "'}", dataType: "json", success: function (data) { alert("Successfully register"); $("#btnregclose").click(); } }); });  
Registration Form



[WebMethod] public string RegUsers(string username, string name) { string response = username + name; return response; }

我是Ajax Jquery的初学者,我正在锻炼以提高我对它的了解。 我的问题是当我点击#btnregister它不能正常工作时。 我认为我在ajax上传递的参数存在问题,但我不知道它是什么。

试试这个 :

  $(document).ready(function () { $('#btnregister').click(function () { var obj = { username: $("#txtuser").val(), name: $("#txtname").val() }; $.ajax({ type: "POST", contentType: "application/json; charset=utf-8", url: "fetchusers.asmx/RegUsers", data: JSON.stringify(obj), dataType: "json", success: function (data) { alert("Successfully register"); $("#btnregclose").click(); } }); }); }); 

这在我当地的环境中起作用。

不是试图通过连接来构建字符串,而是可以更容易地执行以下操作:

 $.ajax(url, { data: JSON.stringify({ username: $("#txtuser").val(), name: $("#txtname).val() }) }); 

如果您在某个字段中说出逗号,它可以防止可能出现的拼写错误/问题。 但请注意,ie7和lower将要求您包含一个名为json2.js( github )的文件。

编辑:此外,尝试手动执行您的Web服务(只需浏览到url,使用海报等)。 你完全有可能得到404或服务器错误。

编辑第2部分:在firefox中调试ajax问题的一个好方法是使用ctrl-shift-k打开Web控制台。 确保启用“Net”并在其下拉列表中选中“Log Request and Response Bodies”。 通过这种方式,您可以看到请求发出并返回。 如果你没有看到一个,那么你的javascript问题,而不是ajax。

另一个编辑:另外,我看到你的点击事件不在$(文件).ready(function(){}); 可能是您在呈现按钮之前附加了click事件。 因此事件没有附加,你甚至没有执行ajax代码。

使用这种语法….

 data: "{ 'username': '" + $("#txtuser").val() + "', 'name': '" + $("#txtname").val() + "'}", 

问题中的代码是正确的,它需要简单的解决方案。 转到yourwebservice.asmx.cs文件并取消注释类级别给出的以下行,这将解决从jQuery或Ajax调用此Web服务的问题。

 [System.Web.Script.Services.ScriptService]