在ajax成功设置变量并在ajax外部的jquery中使用该变量
On ajax success set variable and use the variable in jquery outside ajax
目的是在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(这是ok的)。
然后用ajax插入/更新用户输入。
插入/更新成功后,设置隐藏字段值为0。
在每次php插入/更新执行时检查隐藏字段的值是否为1。如果value为1,则插入/更新该行。如果value为0,对该行不做任何操作。只插入/更新隐藏字段值为1的行
这就是问题的目的。
解决方案是什么?
我认为你不需要这个变量,你可以在ajax方法的onreadystatechange
回调中将隐藏字段is_row_changed1
的值更改为0
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);
});
}
相关文章:
- 如何通过ajax刷新JSF填充的javascript变量
- 通过AJAX传输变量
- 使用PHP和ajax传递URL不太正常的变量
- 如何在没有ajax的情况下将javascript动态数据发送到php变量
- 如何将javascript变量传递给Ajax脚本
- 使用Ajax时,我无法将数据作为变量传递
- 将变量放入ajax函数JQuery
- 如何将Ajax数据值分配给PHP变量
- 如何从ajax成功回调函数中读取javascript变量
- 将变量传递给ajax函数
- PHP/Ajax/jquery/JON-在Ajax Post之后将echo文本中的一部分作为变量返回
- 将html变量从Ajax传递到PHP
- PHP会话ID变量与AJAX一起返回
- 通过Ajax发送时未定义的变量
- 没有通过ajax调用设置Javascript全局变量
- 通过Ajax获取变量
- 如何在ajax回调中使用类变量
- 全局变量 - AJAX jQuery
- Wordpress中的恢复变量Ajax
- 通过按钮传递变量(Ajax Modal)