Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获引用错误:未定义showCategory_Javascript_Jquery_Json_Jquery Mobile - Fatal编程技术网

Javascript 未捕获引用错误:未定义showCategory

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

我定义了一个名为showCategory的函数。然而,由于某种原因,我的调试器告诉我没有定义显示类别。并且不会加载/生成JSON页面。它还表示“未捕获的TypeError:无法读取未定义的属性'replace'”

$.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();
        }
      }
  });