ajax は初めてで、このような基本的な質問をして申し訳ありません。私は使用していajax
ます:
- フォームを送信する (python で書かれている)
- 何らかの計算を行い、出力ページを生成する
- ブラウザを出力ページにリダイレクトする
現在、手順 1 と 2 は完了していますが、ブラウザがリダイレクトしようとすると、405 error
. 提案をいただければ幸いです。
HTMLフォーム
<form method="post" id="form1">File to upload:
<input type="file" id="upfile1" name="upfile" class="required input_button" accept=".csv" />
<input class="submit_button" type="button" value="Submit" />Upload the file!
</form>
JS コード
$('.submit_button').click(function () {
var form_data = new FormData();
$.each($('input[name^="upfile"]')[0].files, function (i, file) {
form_data.append('file-' + i, file);
});
$.ajax({
type: "post",
url: "/geneec_batchoutput.html", ///////NOTE 1/////////
data: form_data,
cache: false,
contentType: false,
processData: false,
success: function () {
window.location = '/geneec_batchoutput.html'; ///////NOTE 2/////////
},
error: function (data) {
console.log('error');
}
});
});
注 1
Form firebug
、計算が終了し、出力ページが生成されたことがわかります。
注 2
これが私が得た場所です405 error
。ajax
したがって、ブラウザを「正しい」出力ページにリダイレクトせず、代わりにブラウザを一般的なページにリダイレクトしたと思います。したがって、データのサポートがなければ、405 error
.
私の質問は、ブラウザを###note 1
at location で生成された出力ページにリダイレクトする方法のようです###note 2
。
アップデート
「動作する」シナリオを添付しましたがajax
、フォームを送信するために .submit() を使用するため、これは実際のアプローチではありません。
htmlフォーム
<form method="post" id="form1" enctype="multipart/form-data" action=geneec_batchoutput.html>File to upload:
<input type="file" id="upfile1" name="upfile" class="required input_button" accept=".csv" />
<input class="submit_button" type="submit" value="Submit" />Upload the file!
</form>
JS コード
form.submit();
$.ajax({
type: "post",
url: "/geneec_batchoutput.html",
success: function () {
window.location = '/geneec_batchoutput.html';
}
});
更新 2
url
コンソールに投稿して内容を確認してみました。必要なものがすべて揃っているように見えurl
ます。これが出力ページです。そのため、一時的に$("body").html(url);
現在のページ コンテンツを置き換えるために使用します。しかし、URL はまだ/geneec_batchinput.html
. URLも更新する方法はありますか?
$.ajax({
type: "post",
url: "/geneec_batchoutput.html",
data: form_data,
cache: false,
contentType: false,
processData: false,
success: function(url) {
console.log(url)
$("body").html(url);
},
error: function(data) {
alert('error')
}
});
ありがとう!