未捕获的ReferenceError:未定义showCategory
Uncaught ReferenceError: showCategory is not defined
我定义了一个名为showCategory的函数。然而,由于某种原因,我的调试器告诉我,show Category没有定义。并且不会加载/生成JSON页面。它还说"未捕获类型错误:无法读取未定义的属性‘替换’"
$.ajax({
type: 'GET',
url: 'http://jsonstub.com/bike/1',
contentType: 'application/json',
beforeSend: function (request) {
request.setRequestHeader('JsonStub-User-Key', '50caee73-c7ed-43b7-912a-7fd6fcdbfd91');
request.setRequestHeader('JsonStub-Project-Key', '54fb5790-b2cc-432f-88ee-7d3596b700bd');
}
}).done(function showCategory( urlObj, options )
{
var categoryName = urlObj.hash.replace( /.*category=/, "" ),
category = categoryData[ categoryName ],
pageSelector = urlObj.hash.replace( /'?.*$/, "" );
if ( category ) {
var $page = $( pageSelector ),
$header = $page.children( ":jqmData(role=header)" ),
$content = $page.children( ":jqmData(role=content)" ),
markup = "<p>" + category.description + "</p><ol>",
content = "<p>" + category.content + "</p>",
image = "<div class='image'><img src='" + category.picUrl + "'></img></div>" ,
cItems = category.items,
numItems = cItems.length;
for ( var i = 0; i < numItems; i++ ) {
markup += "<li>" + cItems[i].name + "</li>";
}
markup += "</ol>";
$header.find( "h3" ).html( category.name );
$content.html( markup + content + image );
$page.page();
$content.find( ":jqmData(role=listview)" ).listview();
options.dataUrl = urlObj.href;
$.mobile.changePage( $page, options );
}
})
$(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();
}
}
});
我尝试了一些方法,但不起作用。有什么想法吗?
演示JSFIDDLE
在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的同时尝试一下,并告诉我结果。
相关文章:
- 为什么“;未定义的“;在JavaScript中结束循环
- 要求未定义JS回调参数
- 如何检查管道中未定义的项目
- TypeError:无法读取属性'推'未定义的JavaScript
- $window.ga在AngularJS事件中未定义
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 无法获取属性'selectedIndex'的未定义引用或null引用
- 如何消除代码中的未定义和其他问题
- 未捕获的ReferenceError:$未定义
- this.router在AngularJS 2中未定义
- 未捕获的类型错误:无法读取属性'删除'的未定义
- 节点fs.stat名称未定义
- 尝试在PHP中回显输入文本时出现未定义的索引错误
- Jquery未定义函数正在停止其他操作
- AngularJS指令出错-无法读取属性'编译'的未定义
- 这.SOMETHING 总是返回未定义的 - extjs
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- Wordpress中带有JQuery Accordion的未定义匿名函数
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件