拥有此代码:
(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 Chrome会在控制台调试消息中显示:
XMLHttpRequest {statusText: "", status: 0, response: "", responseType: "", responseXML: null…}
这意味着:$ .get返回的结果不是包含承诺的XHTTP(因此,.fail方法不存在)。
同时,调试data
对象会假设{modelo:"xxx", concesionaria:"yyy"}
假设" xxx"和" yyy"具有明确定义和期望的值(这意味着:当我触发的错误被触发时,数据被定义并且没有错误。)
HOWEVER 当我将代码复制粘贴到控制台,并用文字对象替换data
参数时,例如:
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 Chrome控制台中所示)是一个包含承诺的对象(如文档中所述)。
问题:为什么会发生这种情况?
(即使这可能是无用的:目前我正在使用Drupal 7)
答案 0 :(得分:0)
找到答案(Drupal Sucks):
首先,加载1.4.4版本的jQuery。然后,调用该函数。最后,加载了jQuery的1.10.1版本。在那之后,我重复了测试用例,当然,它工作了 - .-''。