如果有什么内容涵盖了这个问题,请为此问题道歉。我搜索并找到许多相关帖子,这些帖子让我能够达到这一点。
我有一个带有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
可见,但只有在成功或错误触发时才设置。
答案 0 :(得分:0)
首先检查您是否在响应中获得了一个对象 在成功添加
alert(JSON.stringify(data));
如果它显示了对象,那么你最好去检查创建对象的php文件。
如果在ajax成功后收到了object,那么你需要使用jQuery.parseJSON解析json对象
例如:
response = jQuery.parseJSON(data);
现在你有了一个名为response
的javascript对象。
现在使用它
response['status']
或response['message']
成功的ajax。
答案 1 :(得分:0)
检查代码 首先丢弃:“来自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);
},
答案 2 :(得分:-1)
在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));
}