jQuery中通过ajax调用webservice传递数组参数的问题实例详解 - Web前端
作者:98wpeu发布时间:2026-08-25分类:网页前端技术浏览:89
导读:下面通过实例给大家说明比较直观些,更方便大家了解。本人的项目中通过JQuery.Ajax调用WEBservice.客户端代码如下:$.ajax({url:"te...
下面通过实例给大家说明比较直观些,更方便大家了解。
本人的项目中通过JQuery.Ajax调用WEBservice.
客户端代码如下:
$.ajax({
url: "test/xxx.asmx",
type: 'post',
dataType: 'xml',
timeout: ,
data: { name: "zhangsan", tags: ["aa", "bb", "cc"] },
error: function(xml) {
alert(xml.responsetext);
},
success: function(xml) {
alert("OK");
}
});
服务端代码如下:
[WebMethod]
public Xmldocument xxx(string name, String [] tags )
{
return sth;
}
总是抛出异常.
问题出现在这里:
下面是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)
function bUIldParams(PRefix, obj, traditional, add) {
var name;
if (jquery.isArray(obj)) {
// Serialize array item.
JQuery.each(obj, function(i, v) {
if (traditional || rbracket.test(prefix)) {
// Treat each array item as a scalar.
add(prefix, v);
} else {
// If array item is non-scalar (array or Object), encode its
// numeric index to resolve deserialization ambiguity issues.
// Note that rack (as of ..) can't currently deserialize
// nested arrays properly, and attempting to do so may cause
// a server error. Possible fixes are to modify rack's
// deserialization algorithm or to provide an option or flag
// to force array serialization to be shallow.
//ytx
buildParams(prefix, v, traditional, add);
//buildParams(prefix + "[" + (typeof v === "object" ? i : "") + "]", v, traditional, add);
}
});
} else if (!traditional && jQuery.type(obj) === "object") {
// Serialize object item.
for (name in obj) {
buildParams(prefix + "[" + name + "]", obj[name], traditional, add);
}
} else {
// Serialize scalar item.
add(prefix, obj);
}
}
结论:
出问题的代码在22行,我修改成21行那样就行了.
不过,我对js/jquery都是一知半解的,希望不要引起别的后遗症,呵呵.
以上所述是小编给大家介绍的jQuery中通过ajax调用webservice传递数组参数的问题实例详解的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
相关推荐
- 介绍JS里一款强大的评分插件:raty - Web前端
- 你想要了解的关于vue里面axios的基本知识都在这里了 - Web前端
- 你了解过HTML之DOM nodeType属性吗? - Web前端
- Web前端开发:JavaScript中的字符串的一些应用 - Web前端
- Web前端开发:对于闭包和匿名函数的理解和应用 - Web前端
- SEO初学者对于"White Hat SEO(白帽SEO)"的认知 - Web前端
- 那些年我们曾经用过JavaScript的Null合并运算符 - Web前端
- Vue前端开发报错提示“npm ERR! missing script: dev”的解决方案 - Web前端
- ES6带来“定义变量和类(var、let、const与class)”的改革 - Web前端
- Web前端开发:探讨CSS3中元素位移、旋转、倾斜、缩放等方式 - Web前端
- 网页前端技术排行
-
- 1[Web前端]用javascript实现默认图片替代未显示的图片 - Web前端
- 2分析Iconfont-阿里巴巴矢量常用图标库 - Web前端
- 3jQuery实例教程:制作网页中可折叠的面板 - Web前端
- 4【第六章】Foundation之按钮和下拉功能 - Web前端
- 5基于jquery的滚动条滚动固定div(附演示下载) - Web前端
- 6jQuery编写widget的一些技巧分享 - Web前端
- 7分享精心挑选的12款优秀jQuery Ajax分页插件和教程 - Web前端
- 8jQuery实现鼠标移到元素上动态提示消息框效果 - Web前端
- 9在Mac/PC上远程调试iPhone/iPad上的网页 - Web前端
- 最近发表
-
- WordPress随机显示特色图片插件:Random Post Thumbnails
- KeePass实现Chrome浏览器自动填充密码方法一
- LNMP一键包nginx 301强制跳转到https教程
- KeePass实现Chrome浏览器自动填充密码方法二
- #建站# 免费的VPS管理软件Xshell8/Xftp8中文版下载
- 使用Xshell 8连接VPS教程_电脑登录vps的方法
- WordPress评论界面添加烟花????效果
- 不同浏览器书签同步方案:坚果云+Floccus_详细使用教程
- iOS端KeePassXC客户端APP:Strongbox Password Safe
- 给WordPress评论中的Gravatar头像图片添加ALT属性


