具有以下代码:
(function($) {
$(function(){
$("div.cotizador ul > li > a.cotizador").click(function(){
var data = {
concesionaria: $(this).data("concesionaria"),
modelo: $(this).data("modelo")
};
var promise = $.get("ir-a-concesionaria", data, function(data){
if ("success" in data) {
window.location.href = data.success.redirect;
} else {
alert("No se puede seleccionar el modelo especificado. Consulte con el administrador del sitio.");
}
}, "application/json");
console.log(data);
console.log(promise);
promise.fail(function(xhr, errorType, errorDescription){
alert("Ocurrió un error interno. Intente nuevamente más tarde");
});
});
});
})(jQuery);(目前,哪些HTML实际触发回调并不重要)。
当到达指令console.log(promise)时,Google在控制台调试消息中显示:
XMLHttpRequest {statusText: "", status: 0, response: "", responseType: "", responseXML: null…}这意味着:$.get返回的结果不是承诺包装的XHTTP (因此,.fail方法不存在)。
同时,调试data对象会给出一个{modelo:"xxx", concesionaria:"yyy"},假设"xxx“和"yyy”具有良好的定义和期望值(这意味着:数据是定义的,并且在触发我正在讨论的错误时没有错误)。
然而,当我将代码复制到控制台并用一个文字对象替换参数时,:
jQuery.get("ir-a-concesionaria", {modelo:'toyota-gt86', concesionaria:'casabaca'}, function(data){
if ("success" in data) {
window.location.href = data.success.redirect;
} else {
alert("No se puede seleccionar el modelo especificado. Consulte con el administrador del sitio.");
}
}, "application/json");返回的对象(如Google控制台中所示)是一个承诺包装的对象(如文档中所述)。
问题:为什么会发生这种情况?
(即使这可能没有帮助:目前我正在使用Drupal 7)
发布于 2014-04-14 15:11:34
找到答案(Drupal Sucks):
首先,加载1.4.4版本的jQuery。然后,调用该函数。最后,加载1.10.1版本的jQuery。在那之后,我重复了测试用例,当然,它起了作用-.-'‘。
https://stackoverflow.com/questions/23063112
复制相似问题