2014-03-04 55 views
0

我試了幾個小時纔得到這段代碼的工作,它應該加載與類內容的div,並通過ajax替換當前頁.content。這是一個動態網站,所以我需要它處理所有非出站鏈接。使用jQuery AJAX中的未知錯誤

$("a:not([href^='http://']), a[href^='http://www.example.com'], a[href^='http://example.com']").click(function (event) { 
    event.preventDefault(); 
    var addressValue = $(this).attr("href"); 
    page = addressValue.replace(/https?:\/\/[^\/]+/i, ""); 
    pagecontent = page+" .content"; 
    $(".content").load(pagecontent); 
    $.ajax({ 
     url: page, 
     async: true, 
     success: function(data) { 
      var matches = data.match(/<title>(.*?)<\/title>/); 
     var spUrlTitle = matches[1]; 
       document.title = spUrlTitle; 
     }, 
    }); 
}); 

我已經系統地將錯誤縮小到下面的代碼片段。 (一切事先工作沒有它)

 pagecontent = page+" .content"; 
     $(".content").load(pagecontent); 
     $.ajax({ 
      url: page, 
      async: true, 
      success: function(data) { 
       var matches = data.match(/<title>(.*?)<\/title>/); 
      var spUrlTitle = matches[1]; 
        document.title = spUrlTitle; 
      }, 
     }); 

從進一步分析中,我已確定,該誤差是點擊不具有HTTP鏈接時引起的://

page = addressValue.replace(/https?:\/\/[^\/]+/i, ""); 

上面的代碼線不能運行,因爲沒有http://

我不確定我要如何解決這個問題,但至少我已經縮小了範圍。

+0

這是什麼問題?請求是否轉到正確的網址?嘗試添加錯誤處理程序並記錄錯誤(如果有的話)。 – Boklucius

+0

你的選擇是錯誤的! –

+0

錯誤是沒有任何反應,鏈接如常。 請解釋我的選擇器是如何錯誤的。 :) –

回答

0

這似乎工作:

page = addressValue.replace(/(https?:\/\/)?[^\/]+/i, ""); 

它基本上說要刪除http://https://如果它在前面,但要保持解析,如果沒有匹配。

或者,你可以簡單地使用在規範中已經定義的DOM錨對象的屬性:

var link_Element = $(this).get(0); 
page = link_Element.pathname + link_Element.search; 

以上會連接這些主機名後(URL路徑和任何其他主機級信息,如端口號等),與URL查詢字符串,這是你需要的地方Ajax請求的唯一位,使:

<a href="http://example.org/path/to/content">Full URL</a> 
<a href="/path/to/content">Local URL</a> 
<a href="/path/to/content?stuff=junk">Local URL with query string</a> 

將返回:

/path/to/content 
/path/to/content 
/path/to/content?stuff=junk 

而不必做任何字符串解析/消毒。

+0

謝謝,完美的作品。 :) –

0

如果你打算以此來達到您的域名,你會通過阻止跨域請求網站被封鎖外頁..而不是你可以使用

$.get(page, {/*params*/}, function(data) { 
/*Success Callback*/ 
}); 
+0

這是嚴格的現場鏈接。 :) –

+0

我想我誤解了這個問題..對不起 –

+0

這很好,對不起,我不擅長解釋。 –