0

目的是在成功执行 ajax 后将 html 隐藏输入字段值设置(更改)为 0。

起初决定 ajax 成功定义变量,然后决定在 ajax 外部使用。

但是请阅读(JQuery - 如何在该 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

2

我认为你不需要那个变量,你可以在ajax方法的回调中将隐藏字段的值更改is_row_changed1为零onreadystatechange

hr.onreadystatechange = function() {
    if (hr.readyState == 4 && hr.status == 200) {
        var return_data = hr.responseText;
        document.getElementById("status").innerHTML = return_data;
        document.getElementById('is_row_changed1').value = 0;
    }
}

我建议使用 jQuery ajax 之类的

function ajax_post() {
    var sabt = $('#date_day1').val();
    var prao = $('#amount1').val();
    $.ajax({
        url : "_autosave.php",
        data : {
            date_day1 : sabt,
            amount1 : prao
        }
    }).done(function(html) {
        $('#status').html(html);
        $('#is_row_changed1').val(0);
    });
}
于 2013-04-18T07:35:06.417 回答