目的是在成功执行ajax后将html隐藏输入字段值设置(更改)为0。
首先决定ajax成功定义变量,然后在ajax之外使用。
但是请注意(JQuery - How to use the return value of an ajax call outside that ajax call)这是不可能的。
需要找到一些解决方案。
下面是代码
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 的行。
这就是问题的目的。
解决方案是什么?
最佳答案
我认为您不需要该变量,您可以在ajax方法的onreadystatechange
回调中将隐藏字段is_row_changed1
的值更改为零
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);
});
}
关于javascript - 在ajax成功时设置变量并在ajax之外的jquery中使用该变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16076607/