jQuery ajax仅在第二次尝试时提交

时间:2011-12-14 08:47:44

标签: php jquery ajax

我对jquery有一个非常奇怪的问题。我正在尝试向服务器发送内容并获取数据。我有成功的功能和错误功能。当第一次调用jquery ajax时 - 调用错误函数。第二次(在同一页面上) - 它是成功的。我不知道为什么会这样。 这是我的javascript代码:

$.ajax ({
    type : 'POST',
    url: "/checkout/test",
    context: document.body,
    success: function(data){
        alert (data);
    },
    error: function(XMLHttpRequest, textStatus, errorThrown) {
        alert(textStatus)
    }
});

在服务器端,它只是一个返回“测试”字符串而没有任何HTML的php页面。

发生错误时,这是​​XMLHttpRequest的内容:

readyState: 0;
setRequestHeader: function (a, b) {
    if (!s) {
        var c = a.toLowerCase();
        a = m[c] = m[c] || a, l[a] = b;
    }
    return this;
};
getAllResponseHeaders: function () {
    return s === 2 ? n : null;
};
getResponseHeader: function (a) {
    var c;
    if (s === 2) {
        if (!o) {
            o = {};

            while ((c = bD.exec(n))) {
                o[c[1].toLowerCase()] = c[2];
            }
        }
        c = o[a.toLowerCase()];
    }

    return c === b ? null : c;
};
overrideMimeType: function (a) {
    s || (d.mimeType = a);
    return this;
};
abort: function (a) {
    a = a || "abort", p && p.abort(a), w(0, a);
    return this;
};
pipe: function (a, c) {
    return f.Deferred(function (d) {
        f.each({
            done: [a, "resolve"],
            fail: [c, "reject"]},
            function (a, c) {
                var e = c[0], g = c[1], h;
                f.isFunction(e) ? b[a](function () {
                    h = e.apply(this, arguments), h && f.isFunction(h.promise) ? h.promise().then(d.resolve, d.reject) : d[g + "With"](this === b ? d : this, [h]);
                }) : b[a](d[g]);
            });
        }).promise();
    };
    always: function () {
        return b.done.apply(b, arguments).fail.apply(this, arguments);
    };
    then: function (a, c) {
        b.done(a).fail(c);
        return this;
    };
    promise: function (a) {
        if (a == null) {
            if (d) {
                return d;
            }

            d = a = {};
        }
        var c = g.length;
        while (c--) {
            a[g[c]] = b[g[c]];
        } return a;
    };
    isRejected: function () {
        return !!c || !!b;
    };
    isResolved: function () {
        return !!c || !!b;
    };
    fail: function () {
        if (!d) {
            var c = arguments, g, h, i, j, k;
            b && (k = b, b = 0);
            for (g = 0, h = c.length; g < h; g++) {
                i = c[g], j = f.type(i), j === "array" ? e.done.apply(e, i) : j === "function" && a.push(i);
            }
            k && e.resolveWith(k[0], k[1]);
        }
        return this;
    };
    done: function () {
        if (!d) {
            var c = arguments, g, h, i, j, k;
            b && (k = b, b = 0);
            for (g = 0, h = c.length; g < h; g++) {
                i = c[g], j = f.type(i), j === "array" ? e.done.apply(e, i) : j === "function" && a.push(i);
            } k && e.resolveWith(k[0], k[1]);
        }
        return this;
    };
    success: function () {
        if (!d) {
            var c = arguments, g, h, i, j, k;
            b && (k = b, b = 0);
            for (g = 0, h = c.length; g < h; g++) {
                i = c[g], j = f.type(i), j === "array" ? e.done.apply(e, i) : j === "function" && a.push(i);
            }
            k && e.resolveWith(k[0], k[1]);
        }
        return this;
    };
    error: function () {
        if (!d) {
            var c = arguments, g, h, i, j, k;
            b && (k = b, b = 0);
            for (g = 0, h = c.length; g < h; g++) {
                i = c[g], j = f.type(i), j === "array" ? e.done.apply(e, i) : j === "function" && a.push(i);
            }
            k && e.resolveWith(k[0], k[1]);
        }
        return this;
    };
    complete: function () {
        if (!d) {
            var c = arguments, g, h, i, j, k;
            b && (k = b, b = 0);
            for (g = 0, h = c.length; g < h; g++) {
                i = c[g], j = f.type(i), j === "array" ? e.done.apply(e, i) : j === "function" && a.push(i);
            }
            k && e.resolveWith(k[0], k[1]);
        }
        return this;
    };
    statusCode: function (a) {
        if (a) {
            var b;
            if (s < 2) {
                for (b in a) {
                    j[b] = [j[b], a[b]];
                }
            } else {
                b = a[v.status], v.then(b, b);
            }
        }
        return this;
    };
    responseText: ;
    status: 0;
    statusText: error; 

感谢您的帮助

3 个答案:

答案 0 :(得分:0)

我猜您需要为网址提供文件扩展名。

答案 1 :(得分:0)

试试这个

$.post("/checkout/test", function(data){
alert(data);
});

答案 2 :(得分:0)

除了jquery你正在使用的任何其他JavaScript框架??? 检查firebug控制台是否有错误。