jQuery中通过ajax调用webservice传递数组参数的问题实例详解 - Web前端
作者:98wpeu发布时间:2026-08-25分类:网页前端技术浏览:2
导读:下面通过实例给大家说明比较直观些,更方便大家了解。本人的项目中通过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传递数组参数的问题实例详解的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
相关推荐
- jQuery animate和CSS3相结合实现缓动追逐效果附源码下载 - Web前端
- Bootstrap嵌入jqGrid,使你的table牛逼起来 - Web前端
- 使用jQuery实现Web页面换肤功能的要点解析 - Web前端
- jQuery实现内容定时切换效果完整实例 - Web前端
- jQuery表格插件datatables用法汇总 - Web前端
- Jquery表单验证插件formValidator使用方法 - Web前端
- jquery分页插件jquery.pagination.js实现无刷新分页 - Web前端
- jquery分页插件jquery.pagination.js使用方法解析 - Web前端
- 基于JQuery打造无缝滚动新闻步骤详解 - Web前端
- jQuery实现TAB选项卡切换特效简单演示 - 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属性


