2012-12-26 48 views
0

我目前正在使用JQuery BBQ Js插件來爲我的網站進行Ajax化導航,當我用ajax瀏覽整個站點時,有一個鏈接會告訴我這個錯誤。JQuery Ajax未捕獲類型對象的錯誤

這是我的標記

<ul> 
<li><a id="thankyou" href="#views/thankyou.jsp">Ajaxified Thank You Message</a></li> 
<li><a id="register" href="#views/ajaxvalidation.jsp">Ajaxified Register Register</a></li> 
<li><a id="register" href="#views/othermessage.jsp">Ajaxified Other Message</a></li> 

</ul> 

所有這些兩個鏈接都工作,但是當我點擊第二個鏈接,並提交該錯誤顯示出來的形式,當我點擊了其他錨標記。

Uncaught TypeError: Object function (e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")} has no method 'fragment' 

這個錯誤是由這個腳本triggerd。

$(function(){ 
     var cache = { 
     '': $('.bbq-default') 
     }; 

     $(window).bind('hashchange', function(e) { 

     var url = $.param.fragment(); 

     $('a.bbq-current').removeClass('bbq-current'); 


     $('.bbq-content').children(':visible').hide(); 

     url && $('a[href="#' + url + '"]').addClass('bbq-current'); 

     if (cache[ url ]) { 

      cache[ url ].show(); 

     } else { 
      // Show "loading" content while AJAX content loads. 
      $('.bbq-loading').show(); 

      // Create container for this url's content and store a reference to it in 
      // the cache. 

      cache[ url ] = $('<div class="bbq-item"/>') 

      .appendTo('.bbq-content') 
      .load(url +"#content");//loads the content and get the div you want 
     } 
     }) 
     $(window).trigger('hashchange'); 
    }); 

具體該行

var url = $.param.fragment(); 

是什麼造成的錯誤?

而且這是第二個環節是什麼樣子..

<!DOCTYPE HTML> 
<%@ taglib prefix="s" uri="/struts-tags"%> 
<html> 
<head> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 
    $('#content').on('submit','#result',function(e){ 
     e.preventDefault(); 
     var data = $(this).serialize(); 
     $.ajax({ 
      //this is the php file that processes the data and send mail 
      url: "register.action", 
      type: "POST", 
      data: data, 
      //Do not cache the page 
      cache: false, 
      //success 
      success: function (html) { 
       $('#content').html(html);  
      }  
     }); 
    }) 
}) 
</script> 
</head> 
<body> 
    <h3>Simple Ajax Validation.</h3> 
    <div id="divErrors"></div> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
    <div id = "content"> 
    <s:form action="register" id="result"> 
     <label>UserName</label> 
     <s:textfield name="userBean.username" /> 
     <s:fielderror /> 
     <input type ="submit" id = "result_0" value="AJAX Submit" /> 
    <!-- Test if Even Outside the main page can access the other elements --> 
    </s:form> 
    </div> 
</body> 
</html> 
+0

我從來沒有見過這種構造:''':$('.bbq-default')' - 我現在看到[這裏]的評論(http://benalman.com/code/projects/jquery-bbq/examples/fragment-advanced/)'/ /如果url是''(沒有片段),顯示這個div的內容。' – mplungjan

+0

我只是跟着那個m jquery bbq的文檔。 – user962206

回答

0

我已經找到了解決辦法,不被包含在Ajaxvalidation.jsp的jQuery的燒烤JS,我所做的是我有將jquery-bbq.js及其AJAX請求包含在另一個JS文件中,並且如果各個頁面提出請求,則將它們導入它們。

相關問題