`
snake_hand
  • 浏览: 625017 次
社区版块
存档分类
最新评论

jquery中通过ajax调用webservice传递数组参数的问题

 
阅读更多

如题.

还是直接用例子说明来的直接些.

本人的项目中通过jquery.ajax调用webservice.

客户端代码如下:

 1             $.ajax({
 2                 url: "test/xxx.asmx",
 3                 type: 'POST',
 4                 dataType: 'xml',
 5                 timeout: 1000,
 6                 data: { name: "zhangsan", tags: ["aa", "bb", "cc"] },
 7                 error: function(xml) {
 8                     alert(xml.responseText);
 9                 },
10                 success: function(xml) {
11                     alert("OK");
12                 }
13 
14             });

服务端代码如下:

1   [WebMethod]
2     public XmlDocument xxx(string name, string [] tags )
3     { 
4          return sth;  
5     }

总是抛出异常.

问题出现在这里:

下面是HTTP数据:

POST http://xxx.com/xxx.asmx/xxx HTTP/1.1
Host: center.cmis.htpc.com.cn
Connection: keep-alive
Content-Length: 55
Cache-Control: max-age=0
Origin: http://xxx.com
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept: application/xml, text/xml, */*; q=0.01
Referer: http://xxx.com/xxx.aspx
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3

name=zhangsan&tags%5B%5D=aa&tags%5B%5D=bb&tags%5B%5D=cc

而它期望的格式是如下的:

POST /xxx.asmx/xxx HTTP/1.1
Host: xxx.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length

name=string&tags=string&tags=string

比较上面粗体,post的数据除了问题. 正确的应该如下:

name=zhangsan&tags=aa&tags=bb&tags=cc

看来问题出在jquery.ajax上面了.见代码(jquery.1.8.3.js)

 1     function buildParams(prefix, obj, traditional, add) {
 2         var name;
 3 
 4         if (jQuery.isArray(obj)) { 
 5             // Serialize array item.
 6             jQuery.each(obj, function(i, v) {
 7                 if (traditional || rbracket.test(prefix)) {                    
 8                     // Treat each array item as a scalar.
 9                     add(prefix, v);
10 
11                 } else {
12                     // If array item is non-scalar (array or object), encode its
13                     // numeric index to resolve deserialization ambiguity issues.
14                     // Note that rack (as of 1.0.0) can't currently deserialize
15                     // nested arrays properly, and attempting to do so may cause
16                     // a server error. Possible fixes are to modify rack's
17                     // deserialization algorithm or to provide an option or flag
18                     // to force array serialization to be shallow.
19                     
20                     //ytx 20130411
21                     buildParams(prefix, v, traditional, add);
22                     //buildParams(prefix + "[" + (typeof v === "object" ? i : "") + "]", v, traditional, add);
23                 }
24             });
25 
26         } else if (!traditional && jQuery.type(obj) === "object") {
27             // Serialize object item.
28             for (name in obj) {
29                 buildParams(prefix + "[" + name + "]", obj[name], traditional, add);
30             }
31 
32         } else {
33             // Serialize scalar item.
34             add(prefix, obj);
35         }
36     }

结论:

出问题的代码在22行,我修改成21行那样就行了.

不过,我对js/jquery都是一知半解的,希望不要引起别的后遗症,呵呵.

 

 

 

 

1
4
分享到:
评论

相关推荐

    jQuery中通过ajax调用webservice传递数组参数的问题实例详解

    ### jQuery中通过ajax调用webservice传递数组参数的问题实例详解 在Web开发中,经常会遇到需要通过异步JavaScript和XML(AJAX)技术与服务器端的WebService进行通信,并传递数据的场景。当需要传递数组参数给...

    jQuery使用Ajax方法调用WebService.doc

    本文将详细介绍如何使用jQuery的Ajax方法来调用WebService,并通过具体的示例代码来阐述其工作原理及实践应用。 #### 二、基础知识 在深入探讨之前,我们先了解一下基础概念: 1. **Ajax**:一种在无需重新加载整个...

    jQuery使用Ajax方法调用WebService

    在.NET中,你可以创建一个ASMX文件来定义你的服务方法,然后在jQuery的Ajax调用中引用这些方法。 在调用过程中,需要注意的是跨域问题。由于同源策略的限制,Ajax请求通常只能访问同源(协议+域名+端口)的资源。...

    jQuery使用Ajax方法调用WebService中文WORD版

    资源名称:jQuery使用Ajax方法调用WebService 中文WORD版内容简介:本文档将jQuery使用Ajax 调用WebService 的几个常用的方法做了一个整理,提供给正在找这方面内容的朋友,希望能给学习jQuery的朋友一点帮助。...

    jQuery使用Ajax方法调用WebService[参照].pdf

    在本文中,我们将深入探讨如何使用jQuery的Ajax方法来调用WebService。jQuery是一个流行的JavaScript库,它极大地简化了DOM操作、事件处理以及包括Ajax在内的异步数据通信。Ajax(Asynchronous JavaScript and XML)...

    jQueryMobile访问DotNet_WebService

    3、WebService服务非常全面,返回值分为空、字符串、对象、数组、集合、DataSet等,参数也区分了有参和无参,绝对全面。4、部署的时候注意了,先将WebService发布在IIS上,然后自己调整下程序内部的IP和端口号即可。...

    jquery跨域调用webservice

    通过以上步骤,我们可以实现在jQuery中跨域调用WebService的功能。需要注意的是,JSONP 只支持 GET 请求,因此如果需要发送 POST 请求,则需要考虑其他跨域方案,如 CORS (Cross-Origin Resource Sharing)。此外,...

    jquery调用webservice总结

    .asmx/GetWords", //调用 WebService 的地址和方法名称组合 ---- WsURL/方法名 data: JSON.stringify({ word: 'example' }), //传递参数,使用 JSON.stringify 将对象序列化为 JSON 格式 dataType: 'json', success:...

    Jquery调用WebService示例方法(源代码)

    本示例将深入探讨如何使用jQuery来调用WebService,通过源代码解析相关知识点。 首先,了解jQuery的核心功能对理解jQuery调用WebService至关重要。jQuery提供了`$.ajax()`函数,它是进行异步数据请求的基础。在这个...

    关于jquery ajax 调用带参数的webservice返回XML数据一个小细节.docx

    在使用jQuery AJAX调用带有参数的Web Service并期望返回XML数据时,需要注意一些关键细节以确保数据能够正确传输和解析。以下是对这个问题的详细解释: 首先,jQuery的AJAX方法用于在不刷新整个页面的情况下与...

    jquery调用Webservice的demo(.net)

    在.NET开发环境中,jQuery是一个广泛使用的JavaScript库,用于在客户端进行高效的DOM操作、事件处理以及Ajax交互。而Web服务(Webservice)则是提供跨平台、跨语言的数据交换能力。本教程将通过一个简单的示例来讲解...

    jQuery调用Webservice传递json数组的方法|angluo-javascript-159330.pdf

    jQuery调用Webservice传递json数组的方法涉及了前端JavaScript库jQuery与后端Web服务的交互,并且在交互中传递了JSON格式的数据。JSON,即JavaScript Object Notation,是一种轻量级的数据交换格式,易于人阅读和...

    asp.net+jquery+ajax所有调用例子

    ASP.NET 是一个强大的Web应用程序开发框架,由微软...通过在ASP.NET页面中添加UpdatePanel,并配置触发器,我们可以实现后台方法的AJAX调用。例如,一个简单的ASP.NET AJAX调用aspx页面的方法可能如下: ```asp.net ...

    C#调用WebService实现的Ajax电子相册

    这里,我们利用Ajax调用WebService,获取照片数据,然后在客户端进行处理,达到无刷新的效果,提升用户体验。Jquery库简化了Ajax操作,提供了易于使用的API,使得异步请求变得简单。 在前端展示方面,Jquery对DOM...

    【ASP.NET编程知识】ASP.NET如何定时调用WebService服务.docx

    ASP.NET 编程知识 - ASP.NET 如何定时调用 ... ASP.NET 程序员可以通过学习本文,掌握如何定时调用 WebService 服务,并且了解如何使用 jQuery 和 Ajax 调用 WebService 服务,从而提高应用程序的功能和性能。

    MVC调用webService

    "MvcAndAjax"这个文件名可能代表了一个包含MVC项目和相关的JavaScript文件的示例,用于演示如何在MVC应用中使用AJAX调用WebService。在这个项目中,你可能会找到一个控制器、视图以及用于调用WebService的...

    Jquery + Ajax调用webService实例代码(asp.net)

    webService中要实现ajax调用,则要加这句代码: // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 [System.Web.Script.Services.ScriptService] 代码下载 /201008/yuanma/WebService2....

Global site tag (gtag.js) - Google Analytics