0

目的は、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 である行のみを挿入/更新します。

それが質問の狙いです。

解決策は何ですか?

4

1 に答える 1