我希望得到一些帮助。我有以下代码,通过它我在页面加载时进行ajax调用,并成功检索数据或处理任何结果错误。
我正在使用JQuery UI 1.10.2运行JQuery 2.0.0(PHPStorm似乎无法识别更高版本)。
相关HTML:
<script type="text/javascript" src="inc/JQuery-2.0.0.js"></script>
<script type="text/javascript" src="inc/JQuery-UI-1.10.2.js"></script>
<script type="text/javascript" src="inc/core.js"></script>
...
<div id="feedback-dialog">
<div id="dialog-inner"><!-- dynamic content --></div>
</div>
</body>
使用Javascript:
var engine = 'engine.php',
feedbackWrapper = $('#feedback-dialog'),
feedbackInner = $('#dialog-inner');
function ftShowErrorMessage(e)
{
var error = e.toString(),
errorWrapper = $('<p id="error-message"/>');
$(errorWrapper).text(error);
$(feedbackInner).empty();
$(feedbackInner).append(errorWrapper);
$(feedbackWrapper).dialog({
title: 'An Error Occurred',
dialogClass: 'feedback-error',
buttons: [
{
'OK' : function() {
//do stuff
$(this).dialog('close');
}
}
]
});
}
$(document).ready(function()
{
(function(){
var args = {};
args.Request = 'get country ids with county options';
$.ajax({
type: 'POST',
url: engine,
data: args
})
.done(function(data)
{
try
{
var obj = JSON.parse(data);
if(!obj.hasOwnProperty('error'))
{
//continue
}
else
{
ftShowErrorMessage(obj.error);
}
}
catch(e)
{
ftShowErrorMessage(e)
}
})
.error(function( xhr, ajaxOptions, thrownError )
{
ftShowErrorMessage(thrownError)
});
})();
});
我的目标是捕获AJAX调用何时无法成功调用,或返回不可解析的字符串,或在成功调用中返回错误标志(从PHP脚本发出错误信号)。
我的第一个问题是对话调用不会触发 - 没有给出错误或警告。即使我将其绑定到简单的单击事件,情况也是如此。如果有人能够指出这是失败的地方,我将不胜感激(正在调用包装函数,我可以传递和回显内容 - 它只是在对话框调用时失败)。
其次,有人可以向我澄清ajax success
,done
和complete
函数之间以及error
和fail
之间的区别({ {1}}似乎没有得到IDE的识别,虽然它出现在文档中,但这可能是一个单独的问题。)
答案 0 :(得分:0)
我不确定为什么你的对话框没有显示,也许这会有效:
$(feedbackWrapper).dialog({
title: 'An Error Occurred',
dialogClass: 'feedback-error',
buttons: [
{
'OK' : function() {
//do stuff
$(this).dialog('close');
}
}
]
}).dialog("open");
我不确定为什么会这样做,因为autoOpen: true
是默认值。但是,如果您已经从之前的错误中关闭了对话框,我认为您需要在下次明确打开它。