Javascript XMLHttpRequest POST参数编码
我想在传递url和其他参数的同时提交POST请求。 我有以下脚本,但它不工作Javascript XMLHttpRequest POST参数编码,javascript,ajax,post,xmlhttprequest,Javascript,Ajax,Post,Xmlhttprequest,我想在传递url和其他参数的同时提交POST请求。 我有以下脚本,但它不工作 var params = "param1="+param1_value+"&url="+url_value; var xhr = new XMLHttpRequest(); xhr.open("POST", action_url, true); xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr.onre
var params = "param1="+param1_value+"&url="+url_value;
var xhr = new XMLHttpRequest();
xhr.open("POST", action_url, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
console.log("Done");
}
}
xhr.send(params);
假设url\u值是这样的:
https://www.domain.com/blah?param=&email=domain%40email%2Ecom&blah=1234
此脚本有什么问题?您在尝试访问其他域/网站时可能会遇到问题。接收方必须在其返回消息中具有访问控制允许来源
标题
您可能可以在中找到解决方案。看看这个问题/答案-
url\u值的示例值正在使用。由于值中有&
符号,因此它将作为多个值发送。您可能需要对其进行URL编码,使其看起来像这样
https%3A%2F%2Fwww.domain.com%2Fblah%3Fparam%3D%26email%3Ddomain%40email.com%26blah%3D1234
如果url字符串值缺少引号,请按如下方式警告参数字符串
var params=“param1=”+param1_值+”&url=“+url_值+” 假设Access-Control\u Allow\u Origin
不存在,我是否能够将具有相同参数的html表单发送到相同的域/网站?因为如果我创建了这个html表单,请求就成功了。问题出在这个XMLHttpRequest上。是的,您可以。尽管我建议您使用jQuery,因为这样您就可以使用$('form').serialize()
来传递xhr.send()
。虽然我认为最好使用jQuery的$.ajax()
函数,如前所述,但我认为问题也与编码有关,不过我只是按照您的建议对url进行了编码,但还没有任何结果。当您说“还没有”时,这意味着什么?请求没有通过吗?您的服务器没有收到预期的数据吗?我将您的代码直接复制到我的控制台中,只要设置了param1_值
、url_值
、和action_-url
变量,我就可以正常工作。你能分享任何错误或更多关于错误的信息吗?这段代码运行在google chrome扩展中。如果提交成功,将创建cookie。所以,我要找的是一块饼干。我看不出有任何错误。。