首页 文章

在ajax成功时返回json消息

提问于
浏览
2

我有一个jquery函数,它通过ajax执行更新

更新工作成功,(我可以在firebug网络响应中检查),但我无法获得响应消息,(通过警报或控制台)

这是我的代码片段...

$('#mcbatchsubscribe').on('click', 'a.ajaxresub', function (e) {
    e.preventDefault();
    var email = $(this).attr('emailvalue');
    $.ajax ({
            url: '/admin/ajax/ajax_resubscribe.php',
            data: {email: email},
            dataType: 'json',
            success: function (json) {
                console.log("success", json);
                //alert(json)
            }
            } );

    } );

如果我打开firebug,控制台什么都不返回, - 网络 Headers 显示正确的ajax路径和参数,网络响应显示ajax成功消息,'Resubscribed Success' - ajax页面的作用是运行列表订阅mailchimp上的电子邮件参数,这绝对有效 . 这是ajax片段......

...if ($rsemail->TotalRows > 0) { // Trigger if there is a matching row

$merge_vars = array(
                'FNAME'=>    $rsemail->getColumnVal("MemberFirstName"),
                'LNAME'=>    $rsemail->getColumnVal("MemberLastName")      
               );   

$MailChimp = new \Drewm\MailChimp($api_key);

$subscriberesult = $MailChimp->call('lists/subscribe', 
            array('id'                  => $list_id,
                  'email'               => array('email'=>$rsemail->getColumnVal("MemberEmail")),
                  'merge_vars'          => $merge_vars,
                  'double_optin'        => true,
                  'update_existing'     => true,
                  'replace_interests'   => false,
                  'send_welcome'        => false
            ));


if ($subscriberesult ['email'] != $rsemail->getColumnVal("MemberEmail")) {
            echo nl2br(($subscriberesult ['code'])."\r\n");
            echo nl2br(($subscriberesult ['name'])."\r\n");
            echo nl2br(($subscriberesult ['error'])."\r\n");
        } else {
            echo 'Resubscribed success';
}

} else {
  echo 'Resubscribe failure - Email not found';

}

我想我正在取得进展

我改变了成功:函数(json)完成:function(json)

我现在得到了

对象{readyState:4,responseText:“Resubscribed success”,状态:200,statusText:“OK”}

1 回答

  • 1

    The problem

    您的AJAX请求包含以下设置:

    dataType: "json"
    

    响应文本不是有效的 json 文本 . 当jQuery尝试将响应解析为json - >它失败并跳过 success 回调...

    更多关于jQuery AJAX documentation

    Solution (1)

    从你的ajax参数中删除 dataType:'json' - 这将阻止jQuery尝试将你的响应字符串解析为 json 对象(并且这样做失败了......)

    OR

    Solution 2

    将服务器代码中的 responseText 更改为:

    "{result: 'Resubscribed success'}"
    

    这将通过jQuery的json验证,并且将调用您的 success 处理程序 .

相关问题