我有一個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. 發送$ _ POST PHP和瀏覽器重定向到結果頁
- 4. POST使用HttpWebRequest回調不會觸發POST時的響應是重定向
- 5. 的XMLHttpRequest發送URL作爲響應文本,Firefox不重定向
- 6. 響應重定向發送電子郵件
- 7. 發送重定向到特定端口
- 8. 發送HTTP POST和處理JSON響應
- 9. 發送POST和閱讀流式響應
- 10. 向服務器發送HTTP POST請求並獲得響應?
- 11. 不發送第一個POST的捲髮重定向
- 12. Laravel重定向post到localhost
- 13. 瞭解響應後重定向到
- 14. Zend重定向到json響應
- 15. 向一個頁面發送POST請求,但重定向到另一個頁面
- 16. Express.js重定向到HTTPS併發送index.html
- 17. 響應與 '+' 重定向
- 18. 通過JSON響應發送狀態數據到POST - 通過JavaScript解析
- 19. jQuery $ .post +發送變量後重定向用戶
- 20. PHP - 通過POST重定向併發送數據
- 21. PHP在重定向時用POST發送數據
- 22. 用POST方法重定向javascript頁面
- 23. 發送POST請求到UrbanAirship時的HTTP 400響應
- 24. 得到400響應httpurlconnection發送post請求
- 25. 如何向EWS發送OK響應
- 26. 發送JavaScript數組到PHP通過POST
- 27. 向webhook發送無重定向請求
- 28. 重定向POST htaccess
- 29. 保護髮送的POST數據到另一臺服務器(重定向)
- 30. 通過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