我有一個onclick圖像。當click事件觸發時,我想發送一個HTTP POST並讓window.location重定向到對POST的響應。我怎樣才能做到這一點?JavaScript:發送POST,重定向到響應
回答
假設你需要異步發送POST請求,你可能要檢查下面的例子,讓你在正確的方向前進:
<img src="my_image.png" onClick="postOnClick();">
然後你需要的JavaScript函數提交一個異步HTTP POST請求並將瀏覽器重定向到從HTTP響應接收的URL。你應該能夠在下面的例子中使用XMLHttpRequest
對於這樣的異步調用,如:
function postOnClick()
{
var http = new XMLHttpRequest();
var params = "arg1=value1&arg2=value2";
http.open("POST", "post_data.php", true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
http.onreadystatechange = function() {
if (http.readyState == 4 && http.status == 200) {
window.location = http.responseText;
}
}
http.send(params);
}
注意,對於一個真正的跨瀏覽器XMLHttpRequest
呼叫,您可能需要使用符合標準的跨瀏覽器的XMLHttpRequest實施如XMLHttpRequest.js,除非您使用的是一些JavaScript框架,如jQuery,Prototype,YUI,ExtJS等。
另外,還需要注意的是,上述內容僅適用於發佈到同一域中託管的腳本,否則您將違反same-origin policy,現代網絡瀏覽器將拒絕發送請求。
使用輸入類型圖像。
<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>
這並不處理從響應主體獲取重定向地址。 – friedo 2010-02-08 19:59:46
啊哈,我錯過了那部分問題。它本來可以更清楚地表達出來。 – 2010-02-08 20:05:18
我同意這個問題的含糊不清。我甚至不確定我的答案是否正確地解決了這個問題,儘管它得到了3張最高票數。 (+1來彌補downvotes) – 2010-02-08 20:10:46
使用jQuery發佈的數據,並重定向到所需的位置,像這樣:
$.ajax({
type: 'POST',
url: 'receivedata.asp',
data: 'formValue=someValue',
success: function(data){
window.location = data;
}
});
您可以刪除data: 'formValue=someValue',
如果沒有數據傳遞到你想要發佈到網頁。
不能按預期工作。 'data'檢索請求的響應,在這種情況下,文件'receivedata.asp'而不是url。 – pctroll 2013-08-12 00:08:24
代替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代碼到您的網頁的當前內容。
- 1. 響應重定向回發
- 2. Java Spring Boot:如何響應發送重定向html到UI
- 3. 重定向到外部URL但發送自定義POST參數
- 4. 使用Javascript/jQuery將重定向的POST數據發送到頂級iframe?
- 5. 發送重定向到url中的post方法
- 6. 發送$ _ POST PHP和瀏覽器重定向到結果頁
- 7. POST使用HttpWebRequest回調不會觸發POST時的響應是重定向
- 8. 的XMLHttpRequest發送URL作爲響應文本,Firefox不重定向
- 9. 響應重定向發送電子郵件
- 10. 發送重定向到特定端口
- 11. 發送POST和閱讀流式響應
- 12. 發送HTTP POST和處理JSON響應
- 13. 向服務器發送HTTP POST請求並獲得響應?
- 14. 不發送第一個POST的捲髮重定向
- 15. 重定向到POST操作
- 16. Laravel重定向post到localhost
- 17. 瞭解響應後重定向到
- 18. Zend重定向到json響應
- 19. Java響應從https重定向到http
- 20. 向一個頁面發送POST請求,但重定向到另一個頁面
- 21. Express.js重定向到HTTPS併發送index.html
- 22. 響應與 '+' 重定向
- 23. 向第三方服務器發送http請求並獲得重定向響應
- 24. 重定向到使用JavaScript Ajax響應後
- 25. Javascript重定向將訪問者發送到錯誤的URL
- 26. 通過JSON響應發送狀態數據到POST - 通過JavaScript解析
- 27. 如何使Rails將post發送到return_to路徑,而不是重定向到它?
- 28. Spring MVC重定向與來自HTTP POST的響應
- 29. Spring MVC和POST重定向發送URL上的目標文件
- 30. PHP - 通過POST重定向併發送數據
這是行不通的。 http.responseText是HTML文檔(post_data.php)的主體。您不能重定向到HTML字符串。 – JamesBrownIsDead 2010-02-08 20:51:04
@JamesBrownIsDead:這取決於你從服務器端腳本返回的內容。如果您返回簡單的純文本,則「http.responseText」將僅保存URL。腳本是否返回HTML是否有特定的原因? – 2010-02-08 21:43:55