jQueryAJAX-对结果进行分支
jQuery AJAX - branching on result
我用jQuery设置了第一个AJAX调用,并且运行良好。我需要做的最后一个更改是检查被调用的PHP页面的结果是否有任何数据库错误,并在需要时显示错误。
这是我当前的Javascript:
<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>
我让editProject.php页面回显一个json编码的数组,如下所示:
{"error":"true","text":"Error: No Project ID Found (Missing Parameter)"}
错误和以下成功结果:
{"error":"false","text":"Database Updated Successfully"}
目前is从不为if(data.error)分支进行分支,它总是向else分支,并且也不显示文本值。如果我更改:
$("#ajaxAlert").addClass("alert alert-success").html(data.text);
至:
$("#ajaxAlert").addClass("alert alert-success").html(data);
它确实在ajaxAlertdiv中插入了以下内容:
{"error":"true","text":"Error: Edit Record Error Unknown error (8003)"}
我是jQuery和AJAX的新手,我觉得我已经很接近了,但我不明白为什么它没有为错误分支,为什么它没有显示editProject.php脚本中错误或成功结果的文本值?
问题是data.error
的值。。。它应该是一个布尔值。。。不是字符串
因此,不是在PHP中分配'true'
,而是分配布尔值true
尝试以下两件事,
-
解析JSON响应
data = JSON.parse(data);
-
将
if (data.error)
替换为if(data.error == "true")
您的data.error
属性包含一个非null非空字符串,该字符串的计算结果始终为true。
改为使用:
if (data.error === 'true') {
// ...
}
或者,将JSON更改为包含布尔文字而不是字符串:
{"error":true,"text":"Error: No Project ID Found (Missing Parameter)"}
您的JSON有一个字符串文本"error": "false"
(这是一个truthy值),而不是布尔文本"error": false
(这将是错误的)。
相关文章:
- 奇怪的Javascript结果
- Javascript(jQuery)给了我奇怪的结果
- JSONP请求返回结果,但也触发error_callback
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Javascript,输出结果后页面不断刷新
- 这是使用html快照和谷歌获取的预期结果吗?SEO/SPA
- 将地理编码结果转换为php变量以发布到mysql数据库
- AngularJS/HTML/Bootstrap元素用于动态搜索结果
- JQuery:向多个匹配结果添加换行符的最简单方法
- 当查询不在displayField中时,引导Ajax Typeahead不显示结果
- webpack代码拆分了handlerbs文件——结果是文件很大
- JavaScript循环无法正确计算/显示结果
- 相同的RegExp返回不同的结果-第一次是正确的结果,第二次是null
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- 试图将onChange函数作为道具传递给GrandChlidren,结果是TypeError:这是未定义的
- jQuery使用api获取typeform结果
- 根据条件检查数据库结果
- 什么'这是从第三个函数上的async 1st函数获得结果的更好方法
- Angular,表达式{{}}的结果没有插入到ng-click中
- jQueryAJAX-对结果进行分支