在这个主题中发现了其他几个问题,但它们是人们过早关闭他们的AJAX调用的语法错误,我似乎没有这样做......
这是我的jqGrid loadComplete中的AJAX调用:
loadComplete : function() {
$.getJSON("getCurrentProject.html", function(results){
alert(results);
$(this).jqGrid('setCaption',"Project: " + results);
});
},
如您所见,我只是调用一个URL来获取currentProject String并相应地在jqGrid上设置标题。
麻烦的是,永远不会调用成功函数!我查看了Firebug,我可以看到服务器响应我期望的单个String值(在这种情况下为“default”)。
我在这里缺少什么?我应该只使用get而不是getJSON吗?
答案 0 :(得分:2)
如果您希望响应实际上是JSON,则仅使用.getJSON()
。在你的情况下,你期待一个字符串,所以试试:
loadComplete : function() {
var $this = $(this);
$.get("getCurrentProject.html", function(results){
alert(results);
$this.jqGrid('setCaption',"Project: " + results);
},
"text");
},
你可能不需要.get()
的最后一个参数来将期望的类型设置为“text”,但是你可能会再次 - 如果你不提供它,jQuery会对你进行“智能猜测”。响应类型,它可能猜错。
请注意,在你的ajax回调中this
与loadComplete
函数不同,所以你需要在ajax回调之外的变量中保留对它的引用,如图所示。
答案 1 :(得分:0)
检查AJAX着陆器是否返回有效的JSON(http://jsonlint.com/)并且页面上没有语法错误。如果是这种情况,getJSON可以无声地失败。请参阅http://api.jquery.com/jQuery.getJSON/。