Javascript生成json之后提交表单向其他web项目出现问题,传参乱码。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript生成json之后提交表单向其他web项目出现问题,传参乱码。相关的知识,希望对你有一定的参考价值。

生成参数明明是:"userLoginName":"sss",可是到了web动态项目那边参数就变成了:%7B%22userLoginName%22%3A%22sss%22%7D,求知情同事解决,小弟在此拜谢!

参考技术A 特殊符号是不能直接用 get 提交方式传递的,要先用 encodeURI 转一下
%7B%22userLoginName%22%3A%22sss%22%7D

这个大概就是转过之后的结果。javascript 的话使用 decodeURI 转回来,服务器语言也有对应的方法。
参考技术B

你是直接添加在url后面的参数字符串?  


1 如果可以,建议换成表单参数。

如:

// 你的json数据放在json这里
$.ajax(url, json, callback);

2 非要在url后面添加,建议使用base64转码后再传递。

'xx?wd=' + JSON.stringify(data)

追问

你好,你说的第一种方法是JSONP的方法么,因为是不同项目,所以用ajax有同源策略不能用,网上说JSONP可以不受同源策略的限制,如果是,还请明示啊:)

追答

你可以找一下跨域的解决方法的。

我自己的话,一般使用服务器代理的方式来处理跨域。
可以参考一下 http://www.hyjiacan.com/thread-40-1-1.html

追问

嗯,看了看,意思是使用ajax代理来代理访问要访问的跨域项目,之后再回调回来么?

追答

就是使用你自己的服务器去访问要跨域的资源,从而避免浏览器的同源策略。我个人觉得这种方式比较简单。

jquery提供的jsonp也不错啊,, 你可以试试

追问

谢谢,虽然试了没成功,不过谢谢耐心回答,还是给你啦~~

本回答被提问者采纳

以上是关于Javascript生成json之后提交表单向其他web项目出现问题,传参乱码。的主要内容,如果未能解决你的问题,请参考以下文章

如何在提交前向表单添加其他字段?

使用javascript发送请求时中止链接和表单提交

求助!怎样向别人的网站提交表单并返回信息?

在提交使用JQGrid中的filterGrid生成的搜索表单之前进行验证

javascript 将表单提交保存到JSON

javascript 将表单提交保存到JSON