Javascript jqueryajax-基于结果的分支
我使用jQuery设置进行了第一次AJAX调用,并且运行良好。我需要做的最后一个更改是检查PHP页面中调用的任何数据库错误的结果,并在需要时显示错误 以下是我当前的Javascript:Javascript jqueryajax-基于结果的分支,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我使用jQuery设置进行了第一次AJAX调用,并且运行良好。我需要做的最后一个更改是检查PHP页面中调用的任何数据库错误的结果,并在需要时显示错误 以下是我当前的Javascript: <script type="text/javascript"> $(document).ready(function() { $("#storeManager").change(function(){ var storeManager = $("#st
<script type="text/javascript">
$(document).ready(function() {
$("#storeManager").change(function(){
var storeManager = $("#storeManager").val();
$.post('editProject.php', { type: 'storeManager', storeManager: storeManager, id: '1E1DDA14-D2C6-4FC8-BA5F-DBCCC7ABAF7F' }, function(data) {
if (data.error) {
$("#storeManagerRow").addClass("danger");
$("#ajaxAlert").addClass("alert alert-danger");
$("#ajaxAlert").addClass("danger").html(data.text);
} else {
$("#storeManagerRow").addClass("success");
$("#storeManagerRow").removeClass("danger");
$("#ajaxAlert").addClass("alert alert-success").html(data.text);
}
}).fail(function (xhr) {
// no data available in this context
$("#storeManagerRow").addClass("danger");
$("#ajaxAlert").addClass("alert alert-danger");
//display AJAX error details
$("#ajaxAlert").html(xhr.responseText);
});
});
});
</script>
对于错误,请执行以下操作以获得成功结果:
{"error":"false","text":"Database Updated Successfully"}
目前,is从不为if(data.error)分支分支,它总是分支到else分支,并且也不显示文本值。如果我改变:
$("#ajaxAlert").addClass("alert alert-success").html(data.text);
致:
它会将以下内容插入ajaxAlert div:
{"error":"true","text":"Error: Edit Record Error Unknown error (8003)"}
我对jQuery和AJAX不熟悉,一开始就解决了问题-我感觉自己很接近,但不明白为什么它没有为错误分支,为什么它没有显示editProject.php脚本中的错误或成功结果的文本值?您的
数据。error
属性包含一个非空字符串,这将始终评估为真
而是使用:
if (data.error === 'true') {
// ...
}
或者,将JSON更改为包含布尔文字而不是字符串:
{"error":true,"text":"Error: No Project ID Found (Missing Parameter)"}
您的JSON有一个字符串literal
“error”:“false”
(这是一个真实值)而不是布尔值literal“error”:false
(这可能是falsy)。问题是数据的值。error
。。。它应该是一个布尔值。。。一丝不挂
因此,不要在PHP中指定
'true'
,而是指定布尔值true
尝试以下两件事
data=JSON.Parse(data)代码>
(data.error==“true”)
if (data.error === 'true') {
// ...
}
{"error":true,"text":"Error: No Project ID Found (Missing Parameter)"}