Javascript 未捕获引用错误:未定义showCategory
我定义了一个名为showCategory的函数。然而,由于某种原因,我的调试器告诉我没有定义显示类别。并且不会加载/生成JSON页面。它还表示“未捕获的TypeError:无法读取未定义的属性'replace'”Javascript 未捕获引用错误:未定义showCategory,javascript,jquery,json,jquery-mobile,Javascript,Jquery,Json,Jquery Mobile,我定义了一个名为showCategory的函数。然而,由于某种原因,我的调试器告诉我没有定义显示类别。并且不会加载/生成JSON页面。它还表示“未捕获的TypeError:无法读取未定义的属性'replace'” $.ajax({ 键入:“GET”, 网址:'http://jsonstub.com/bike/1', contentType:'应用程序/json', 发送前:功能(请求){ setRequestHeader('JsonStub-User-Key','50caee73-c7ed-43
$.ajax({
键入:“GET”,
网址:'http://jsonstub.com/bike/1',
contentType:'应用程序/json',
发送前:功能(请求){
setRequestHeader('JsonStub-User-Key','50caee73-c7ed-43b7-912a-7fd6fcdbfd91');
setRequestHeader('JsonStub-Project-Key','54fb5790-b2cc-432f-88ee-7d3596b700bd');
}
}).done(函数showCategory(urlObj,选项)
{
var categoryName=urlObj.hash.replace(/.*category=/,“”),
类别=类别数据[类别名称],
pageSelector=urlObj.hash.replace(/\?*$/,“”);
如果(类别){
变量$page=$(页面选择器),
$header=$page.children(“:jqmData(role=header)”),
$content=$page.children(“:jqmData(role=content)”),
markup=“”+category.description+”“,
content=“”+category.content+”“,
image=“”,
cItems=类别.items,
numItems=cItems.length;
对于(变量i=0;i”+cItems[i]。名称+””;
}
标记+=“”;
$header.find(“h3”).html(category.name);
$content.html(标记+内容+图像);
$page.page();
$content.find(“:jqmData(role=listview)”).listview();
options.dataUrl=urlObj.href;
$.mobile.changePage($page,选项);
}
})
$(文档).bind(“pagebeforechange”,函数(e,数据){
if(typeof data.toPage==“string”){
var u=$.mobile.path.parseUrl(data.toPage),
re=/^#类别项目/;
如果(u.hash.search(re)!==-1){
showCategory(u、data.options);
e、 预防默认值();
}
}
});
我试过一些方法,但没用。有什么想法吗?怎么了
在AJAX请求的
done
方法之外定义您的showCategory
函数,然后调用它
function showCategory(args){
//stuff
}
$.ajax({
//ajax stuff
}).done(function(data){showCategory(argsTakenFromData)})
$(document).bind( "pagebeforechange", function( e, data ) {
if ( typeof data.toPage === "string" ) {
var u = $.mobile.path.parseUrl( data.toPage ),
re = /^#category-item/;
if ( u.hash.search(re) !== -1 ) {
showCategory( u, data.options );
e.preventDefault();
}
}
});
应该有帮助
UPD在
done
函数调用中稍微更改了我的答案。但仍然会出现错误,因为您忘记定义categoryData
数组,或者我看不到它的声明,所以请在注释中说明这一点,因此,请在声明arr时尝试此操作并告诉我结果。您没有定义showcontegory
,而是传递一个命名匿名函数。因此,将showCategory
移动到ajax之上(如果可能的话),并在done promise中传递函数引用。现在它打开了第三个页面,但仍然不会加载JSON。错误控制台显示:uncaughtreferenceerror:urlObj不是defined@iamalama工作很忙,所以请阅读upd并告诉我结果。
function showCategory(args){
//stuff
}
$.ajax({
//ajax stuff
}).done(function(data){showCategory(argsTakenFromData)})
$(document).bind( "pagebeforechange", function( e, data ) {
if ( typeof data.toPage === "string" ) {
var u = $.mobile.path.parseUrl( data.toPage ),
re = /^#category-item/;
if ( u.hash.search(re) !== -1 ) {
showCategory( u, data.options );
e.preventDefault();
}
}
});