带有对话框调用的JQuery AJAX

时间:2014-07-12 10:26:05

标签: javascript jquery ajax

我希望得到一些帮助。我有以下代码,通过它我在页面加载时进行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 successdonecomplete函数之间以及errorfail之间的区别({ {1}}似乎没有得到IDE的识别,虽然它出现在文档中,但这可能是一个单独的问题。)

1 个答案:

答案 0 :(得分:0)

我不确定为什么你的对话框没有显示,也许这会有效:

$(feedbackWrapper).dialog({
    title: 'An Error Occurred',
    dialogClass: 'feedback-error',
    buttons: [
        {
            'OK' : function() {
                //do stuff
                $(this).dialog('close');
            }
        }
    ]
}).dialog("open");

我不确定为什么会这样做,因为autoOpen: true是默认值。但是,如果您已经从之前的错误中关闭了对话框,我认为您需要在下次明确打开它。