我的jQuery速记“$ .get()”ajax方法及其回调函数的奇怪行为

时间:2013-02-21 17:44:14

标签: javascript jquery

我有以下jQuery脚本:

$(document).ready(function() {
    $("#resendActivationEmailLink").bind("click", function(event) {
        $.get($(this).attr("href"), function() {
            $("#emailNotActivated").html("<span>not yet activated. email sent!</span>");
        });
        event.preventDefault();
        return false;
    });
});

虽然ajax调用确实有效,但是没有调用get()函数的回调函数,即不调用此行:

$("#emailNotActivated").html("<span>not yet activated. email sent!</span>");

有人可以帮忙吗?

修改: 来自ajaxError的请求对象:

Object {readyState: 4, setRequestHeader: function, getAllResponseHeaders: function, getResponseHeader: function, overrideMimeType: function…}
abort: function ( statusText ) {
always: function () {
complete: function () {
done: function () {
error: function () {
fail: function () {
getAllResponseHeaders: function () {
getResponseHeader: function ( key ) {
overrideMimeType: function ( type ) {
pipe: function ( /* fnDone, fnFail, fnProgress */ ) {
progress: function () {
promise: function ( obj ) {
readyState: 4
responseText: "dummy"
setRequestHeader: function ( name, value ) {
state: function () {
status: 200
statusCode: function ( map ) {
statusText: "OK"
success: function () {
then: function ( /* fnDone, fnFail, fnProgress */ ) {
__proto__: Object

编辑2: 输出来自:console.log($(this).attr('href'));

/bignibou/resendActivationEmail/235617cb-c19c-4694-ab9e-753e5d7QQde07 

2 个答案:

答案 0 :(得分:3)

设置error handler

$(document).ajaxError(function(event, request, settings) {
    alert( "Error requesting page " + settings.url);
});

这会被触发吗?查看控制台中Ajax调用返回的内容。

  • 编辑 -

因此错误响应显示4和200,所以这很好。下一个问题可能是解析。尝试设置数据类型,以便jQuery不会猜测和失败。

$.get($(this).attr("href"), function(){ ... }, "html")

如果有效,我打赌你的服务器端代码会返回错误的内容类型和响应。

答案 1 :(得分:0)

试试这个:

$.get($(this).attr("href"), function(data) {
  if(data){
    $("#emailNotActivated").html("<span>not yet activated. email sent!</span>");
  }
});