目的は、ajax の実行が成功した後に、html の隠し入力フィールドの値を 0 に設定 (変更) することです。
最初は、変数を定義するために ajax の成功を決定し、後者は ajax の外部で使用することにしました。
しかし、( JQuery - その ajax 呼び出しの外で ajax 呼び出しの戻り値を使用する方法) を読んで、それは不可能です。
何らかの解決策を見つける必要があります。
以下はコードです
Ajax (例として)
<script language="JavaScript" type="text/javascript">
function ajax_post(){
if (window.XMLHttpRequest)
{
var hr = new XMLHttpRequest();
}
else
{
var hr = new ActiveXObject("Microsoft.XMLHTTP");
}
var url = "_autosave.php";
var sabt = document.getElementById("date_day1").value;
var prao = document.getElementById("amount1").value;
var vars = "date_day1="+sabt+"&amount1="+prao;
hr.open("POST", url, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var return_data = hr.responseText;
document.getElementById("status").innerHTML = return_data;
ここでは、変数を ajax の外部で使用するように定義することにしました。スクリプトが変数を超えて実行され、ajax 変数が設定される前に ajax 変数の外部に到達するため、これは機能しません。
var ajax_post_success = 1;
コードの残りの部分
}
}
hr.send(vars); // Actually execute the request
document.getElementById("status").innerHTML = "processing...";
}
</script>
次に後者(ajax成功の場合、値を0に設定)
<input type="hidden" name="is_row_changed1" id="is_row_changed1" value="" >
<script>
$(document).ready(function() {
if(ajax_post_success == 1) {
document.getElementById('is_row_changed1').value = 0;
}
});
</script>
このすべての目的は次のとおりです。
10行で各行に19個の入力フィールドを持つテーブルを使用する予定です。
ユーザーがいずれかのフィールドに何かを入力すると、非表示の入力フィールドの値が 1 に変わります (これは問題ありません)。
次に、ajax挿入/更新ユーザー入力を使用します。
挿入/更新が成功したら、非表示フィールドの値を 0 に設定します。
PHP の挿入/更新の実行ごとに、隠しフィールドの値が 1 かどうかを確認します。値が 1 の場合は、行を挿入/更新します。値が 0 の場合、その行は何もしません。非表示フィールドの値が 1 である行のみを挿入/更新します。
それが質問の狙いです。
解決策は何ですか?