[英]Unable to update div text from ajax response sent via php
如果有什么可以解决的,对此问题表示歉意。 我搜索并找到了许多相关的帖子,这些使我到了这一点。
我有一个带有1个输入框和一个按钮以及一个div的状态消息的表单片段:
<div>
<div>
<div>
<input id="discount_code"name="discount_code" placeholder=" Enter discount code."></input>
</div>
<div>
<a class="btn btn-xs btn-primary" id="btn-validate">Validate</a>
</div>
</div>
<div id="status_msg" style="border: 1px solid black"></div>
</div>
然后,我有以下JavaScript代码:
根据点击触发的位:
$('#btn-validate').on('click', function(e) { e.preventDefault(); validateCode(11); // "11" is a php-provided ID variable });
带有ajax调用的javscript:
function validateCode(eventID) { var codeValue = $("#discount_code").val(); if (FieldIsEmpty(codeValue)) { // outside function that exists/works fine $('#status_msg').html('Enter a discount code.').fadeIn(500); $('#status_msg').fadeOut(2500); //bootbox.alert("Please enter discount code to validate."); } else { $.ajax({ type: 'POST', cache: false, async: true, url: '/include/discount_validation.php', dataType: 'json', data: { event_id: eventID, discount_code: codeValue }, beforeSend: function() { $('#status_msg').html(''); $('#status_msg').fadeIn(0); }, success: function(data) { $('#status_msg').html(data); $('#status_msg').fadeIn(0); //bootbox.alert(data); }, error: function(data) { $('#status_msg').html(data); $('#status_msg').fadeIn(0); //bootbox.alert("Error validating discount code: " + JSON.stringify(discount_code)); } }); }};
而且,我有一个PHP文件,可以满足要求,并且正在根据输入生成以下json
输出:
// do php database things...
header('Content-Type: application/json');
if(!isset($percent)) {
//echo("Invalid code: '" . $dCode ."'");
$message = "Invalid code: '" . $dCode ."'";
echo json_encode(array('status' => 'error','message' => "$message"));
} else {
$message = "Code: '" . $dCode . "'" . " provides a " . $percent . "% discount.";
echo json_encode(array('status' => 'success', 'message' => "$message"));
}
在上面,我注释掉了bootbox.alert
行,但是当它们处于活动状态时,将出现该框,并且消息与我期望的一样。
最后,第一个条件(如果输入框为空)将触发警报(未注释时)并更改#status_msg
的文本。
我放入边框以验证可见性,并且#status_msg
是可见的,但在成功或错误触发时均未设置。
首先检查您是否在成功添加响应的对象中添加
alert(JSON.stringify(data));
如果显示对象,那么您可以继续进行检查,否则请检查创建对象的php文件。
如果成功接收到ajax对象,则需要使用jQuery.parseJSON解析json对象。
例如:
response = jQuery.parseJSON(data);
现在,您有了一个名称response
的javascript对象。
现在使用它
ajax成功时的response['status']
或response['message']
。
检查代码,首先丢弃:“来自PHP代码$ message变量
if(!isset($percent)) {
//echo("Invalid code: '" . $dCode ."'");
$message = "Invalid code: '" . $dCode ."'";
echo json_encode(array('status' => 'error','message' => $message));
} else {
$message = "Code: '" . $dCode . "'" . " provides a " . $percent . "% discount.";
echo json_encode(array('status' => 'success', 'message' => $message));
}
然后使用对字体结束成功函数的响应:
success: function(data) {
$('#status_msg').html(data.message);
$('#status_msg').fadeIn(0);
},
这样在ajax()
设置数据。
success: function(data) {
var result = eval(data);
$('#status_msg').html(result.message);
$('#status_msg').fadeIn(0);
//bootbox.alert(data);
},
error: function(data) {
var result = eval(data);
$('#status_msg').html(result.message);
$('#status_msg').fadeIn(0);
//bootbox.alert("Error validating discount code: " + JSON.stringify(discount_code));
}
和
if(!isset($percent)) {
//echo("Invalid code: '" . $dCode ."'");
$message = "Invalid code: '" . $dCode ."'";
echo json_encode(array('status' => 'error','message' => $message));
} else {
$message = "Code: '" . $dCode . "'" . " provides a " . $percent . "% discount.";
echo json_encode(array('status' => 'success', 'message' => $message));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.