Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.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:发送帖子,重定向到响应_Javascript_Http_Post_Redirect - Fatal编程技术网

JavaScript:发送帖子,重定向到响应

JavaScript:发送帖子,重定向到响应,javascript,http,post,redirect,Javascript,Http,Post,Redirect,我有一张用鼠标点击的图片。当触发click事件时,我想发送一个HTTP POST,并将window.location重定向到对POST的响应。如何才能做到这一点?假设您需要异步发送POST请求,您可能需要检查以下示例,以使您朝着正确的方向前进: <img src="my_image.png" onClick="postOnClick();"> 请注意,对于真正的跨浏览器XMLHttpRequest调用,您可能希望使用符合标准的跨浏览器XMLHttpRequest实现,如,除非您使用

我有一张用鼠标点击的图片。当触发click事件时,我想发送一个HTTP POST,并将window.location重定向到对POST的响应。如何才能做到这一点?

假设您需要异步发送POST请求,您可能需要检查以下示例,以使您朝着正确的方向前进:

<img src="my_image.png" onClick="postOnClick();">
请注意,对于真正的跨浏览器
XMLHttpRequest
调用,您可能希望使用符合标准的跨浏览器XMLHttpRequest实现,如,除非您使用的是诸如、等JavaScript框架


此外,还请注意,只有当您发布到同一域中托管的脚本时,上述操作才有效,否则您将违反,并且现代web浏览器将拒绝发送请求。

使用输入类型图像

<form action="someUrl.html" method="POST">
    <input type="image" src="img.png" width="30" height="30" alt="Submit">
</form>


单击图像时,您将被重定向到“someUrl.html”,并向其发送帖子

只需将按钮绑定到表单元素的提交方法,重定向将自然发生

<script type='text/javascript'>
 function form_send(){
   f=document.getElementById('the_form');
   if(f){
     f.submit();
     }
   }
 </script>

<form method='post' action='your_post_url.html' id='the_form'>
  <input type='hidden' value='whatever'>
</form>

<span id='subm' onclick='form_send()'>Submit</span>

函数形式_send(){
f=document.getElementById('u表单');
如果(f){
f、 提交();
}
}
提交
使用post数据并重定向到所需位置,如下所示:

$.ajax({
  type: 'POST',
  url: 'receivedata.asp',
  data: 'formValue=someValue',
  success: function(data){
      window.location = data;
  }
});

如果没有要传递到要发布到的页面的数据,则可以删除
数据:“formValue=someValue”

而不是
window.location=http.responseText
使用以下命令:

http.onreadystatechange = function() {
  if (http.readyState == 4 && http.status == 200) {
    document.open();
    document.write(http.responseText);
  }
}

document.open()
清除页面的当前内容,并
document.write()
将响应html代码插入页面。

您可以使用我制作的此函数:


这无法处理从回复主体获取重定向地址的问题。啊哈,我错过了问题的这一部分。我同意这个问题有点含糊不清。我甚至不确定我的答案是否正确地回答了这个问题,尽管它获得了3张赞成票。(+1以补偿落选票)谢谢丹尼尔;我最初想知道你为什么建议使用XHR,但在重新阅读后,我确实认为这是提问者的意图,从帖子中获得一个位置作为回应,然后去那里,因此需要XHR。不过,我觉得如果提问者提供更多细节,可以用其他方式解决。这是行不通的。http.responseText是HTML文档(post_data.php)的主体。您不能重定向到HTML字符串。@jamesbrownsdead:这取决于您从服务器端脚本返回的内容。如果返回简单的纯文本,
http.responseText
将只保存URL。您的脚本返回HTML有什么特别的原因吗?如果您将代码粘贴到这里查看并讨论它,效果会更好。没有按预期工作。”“数据”检索请求的响应,在本例中是文件“receivedata.asp”,而不是url。
http.onreadystatechange = function() {
  if (http.readyState == 4 && http.status == 200) {
    document.open();
    document.write(http.responseText);
  }
}