基于AJAX响应不起作用的条件成功回调

时间:2014-02-20 作者:EHerman

我试图运行一个ajax请求,将一些数据传递给我编写的函数。我返回响应,并尝试基于响应运行一些javascript,但它似乎运行不正常。不管回复是什么,它总是像“一切都是黑猩猩”一样运行

jQuery.ajax({
    type: \'POST\',
    url: ajaxurl,
    data: {
        action:      \'chimp_form\',
        form_action: \'validate_api_key\',
        api_key:     apiKey,
        data_center: dataCenter
    },
    success: function(validation_response) {
        // alert(validation_response);
        if(validation_response == "Everything\'s Chimpy!") {
            jQuery(\'.mailChimp_api_key_preloader\')
                .fadeOut(\'fast\', function() {
                    jQuery(\'.mailChimp_api_key_validation_message\')
                        .html(\'<img src="/images/mc-checkmark.png" alt=message > Valid API Key\')
                        .css("color", "green").fadeIn();
                });
        } else {
            // alert(response);
            jQuery(\'.mailChimp_api_key_preloader\')
                .fadeOut(\'fast\', function() {
                    jQuery(\'.mailChimp_api_key_validation_message\')
                        .html(\'<img src="/images/yikes-mc-error-icon.png" alt=message > Error: \'+validation_response+\'.\')
                        .css("color", "red").fadeIn();
                });                             
        };
    },
    error: function(response) {
        alert(\'There was an error processing your request...\'); 
    }
});
我收到了ajax请求的回复,它说“一切都是黑猩猩!”,但我的条件没有运行。不管怎样,successfunction都会运行第二个条件。但我已经测试了响应,可以看到它与我的第一个条件语句相匹配。

为什么第一个没有运行?

最奇怪的是。。。我在localhost安装上开发了这个。当我将其转移到我的live站点时,这个ajax请求和成功回调不像在localhost上那样工作。我想不出为什么它在本地主机上的行为会与在实时站点上的行为有所不同。

This is the response that is coming back:错误:一切都是黑猩猩!。

3 个回复
最合适的回答,由SO网友:EHerman 整理而成

我最终选择了:

 if(response.indexOf(\'Everything\\\'s Chimpy!\') > -1) {

    } else {

    }
它就像一个符咒。感谢您的回复!

SO网友:Otto

节省一些精力,检查wp_send_json_success()wp_send_json_error() 而不是函数。这将允许您从PHP发回数据,并自动发回javascript代码要检查的成功值。

SO网友:fuxia

一个原因可能是每个jQuery的AJAX请求默认为async: true, 而且响应来得太晚(localhost通常更快)。尝试async: false. 这至少解决了我最近遇到的类似情况。

另一个重要细节:您的响应HTTP状态代码应该是200。因此,在您的回调中,在发送任何输出之前,在顶部添加这一行:

status_header( 200 );

结束

相关推荐

使用jQuery或AJAX优化/过滤WP_QUERY帖子

我知道这个问题已经被问过很多次了,但我确实花了5个多小时寻找答案,却没有找到任何能让我朝着正确方向前进的东西。我想要达到的目标与此类似http://car-insurance.findthebest.com/ 在左侧选择术语,然后添加这些术语(在本例中,这些术语显示在结果的顶部),并在其旁边添加X以从查询中删除这些术语。我见过很多过滤插件的例子,但大多数都是基于搜索的,我不想进行搜索。我的示例:自定义职位类型=作业自定义分类法=国家、类型、工作领域(如工程师、设计师、程序员等)获取所有作业的简单查询(简化