我有一个HTML表单,我的任务是更新.. 它需要能够应用折扣代码,并且更新总数(在提交之前)
我正在使用AJAX:
我当前的问题是我无法设置此var .. NOR从我的AJAX调用中的return / success函数调用此现有函数。
在发布之前搜索..(据我所知,这至少部分是我的问题)..我得到AJAX是异步..并且'doMath()函数可能在php响应之前被调用/执行被送回)..
但我仍然不明白为什么var在我设置然后检查它时没有更新?在'成功'回调??
我读过将async设置为false ..
如:
$.ajax({
async: false,
type: "POST",
但也读到这是一种不好的方法,应该避免..
当所有'说完了'时,是否有一个不同或更好的回调?而不是使用成功或许?
重新上限:
这是PHP所需的情况(完整披露)
$dicountcode = 'code_to_match';
$submittedDiscount = $_POST['var1'];
if($submittedDiscount == $dicountcode){
//echo 'TRUE: '.$submittedDiscount;
echo 'true';
}else{
//echo 'False: '.$submittedDiscount;
echo 'false';
}
实际上,大多数AJAX都在上述两个项目之外工作。
这是我的代码/方法:
<script type="text/JavaScript" language="JavaScript">
var doDiscount = false;
//math operations
function dothemath() {
//do some math stuff here
//update the page with the new 'amount'
//** uses the above doDiscount var status to knwo wheather to apply a discount or not
}
function applyDiscount(){
//make ajax call and send data to PHP script for discount checking
alert("'else' routine executed...");
$.ajax({
//async: false,
type: "POST",
url: "conservationmanual_discount.php",
//datatype: "html",
datatype: "text",
data:{
//var1: "My Discount Code"
"disCode": $('#discountcode').val()
},
success: function(response) {
alert("PHP RETURN CHECK: "+response);
if(response == "true"){
alert("Discount Code is Valid.");
//update var
doDiscount = true;
//update discount status icon
$("#discountStaus").html(
"<img src='greencheck.png' />"
);
//check doDiscount status after 'update'
console.log("DO DISCOUNT STATUS: "+doDiscount);
//calculate/update total:
dothemath();
}else{
alert("Discount Code is not Valid.");
//update discount status icon
$("#discountStaus").html(
"<img src='redx.png' />"
);
//leave as is/do nothing
console.log("DO DISCOUNT STATUS: "+doDiscount);
}
}
});
}
</script>
更新
此外..我调试越深,我似乎无法在条件检查中使用响应。
即:
success: function(response) {
alert("PHP RETURN CHECK: "+response);
if(response == "true"){
alert("Discount Code is Valid.");
//update var
doDiscount = true;
//update discount status icon
$("#discountStaus").html(
"<img src='greencheck.png' />"
);
//check doDiscount status after 'update'
console.log("DO DISCOUNT STATUS: "+doDiscount);
//calculate/update total:
dothemath();
如何在条件中使用PHP响应/返回数据?
response == "true"
似乎永远不是真的吗?虽然我的警告,显示“回应”是真的:
alert("PHP RETURN CHECK: "+response);
但是它之后的直接条件检查总是假的??? (probbaly为什么我无法正确设置var?
答案 0 :(得分:0)
我建议您将所需的doDiscount值传递给dotheMath()
函数。我没有看到任何令人信服的理由让您将价值存储在全球范围内。这种变化可能很简单:
所以数学函数可能如下所示:
function dothemath(doDiscount) {
//
}
您的成功处理程序可能如下所示:
success: function(data) {
dotheMath(data);
}
请注意,我没有任何条件,因为我假设dotheMath()
函数会处理true和false两种情况,因为这是你想要通过doDiscount
变量做的事情