Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript XMLHttpRequest POST参数编码_Javascript_Ajax_Post_Xmlhttprequest - Fatal编程技术网

Javascript XMLHttpRequest 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

我想在传递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.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。所以,我要找的是一块饼干。我看不出有任何错误。。