2013-04-18 31 views
5

Sử dụng jQuery mới nhất (1.9.0), tôi bối rối là tại sao mã này không hoạt động:jQuery Ajax Nhận lỗi dữ liệu Cú pháp, không được công nhận biểu:

$.testAjaxFilter = function() { 

    var base = this; 

    // get faq categories 
    var currentFaqCategories = $('#category-list ul li a'); 

    // loop through each faq category link and bind a click event to each 
    if (typeof currentFaqCategories !== 'undefined') { 

     $.each(currentFaqCategories, function(index, category) { 

      $(category).click(function(e) { 
       $(e.target).getFaqList(); 
       return false; 
      }); 

     }); 

    } 

    // GET faq list elements from category link 
    $.fn.getFaqList = function() { 

     $.get($(this[0]).attr('href'), function(data) { 

      base.addFaqSectionToPage($(data).find('section.faq-page #content-column')); 

     }); 

    }; 

    // add new faq section to current page 
    this.addFaqSectionToPage = function(faqSection) { 

     // remove old faq section 
     var currentFaqSection = $('section.faq-page #content-column'); 

     currentFaqSection.empty(); 
     currentFaqSection.append(faqSection); 

    }; 

}; 

$.testAjaxFilter(); 

Trong khi xem giao diện điều khiển, khi nhấp vào một trong của liên kết danh mục, GET truy xuất toàn bộ trang trong phản hồi của nó, nhưng sau đó nó được theo sau bởi lỗi cú pháp, biểu thức không được công nhận: (liệt kê tất cả HTML từ trang đã truy xuất). Vì vậy, có điều gì đó không ổn trong số $.fn.getFaqList, có thể sử dụng số $(data)?

Có điều gì hiển nhiên tôi đang làm sai không? Mọi sự trợ giúp sẽ rất được trân trọng. Tôi không hiểu lắm về công cụ AJAX.

+0

Thực hiện .find ('a') – karthikr

+5

Nếu bạn đang ở trên 1.8+ bạn có thể thử '$ ($. ParseHTML (dữ liệu)). Find' – Musa

+0

Cảm ơn Musa! Điều đó đã làm nó! Tôi sẽ thêm điều này vào câu hỏi của tôi. – beefchimi

Trả lời

10

Nhờ Musa cho trỏ này ra. Tôi sẽ thưởng cho bạn là câu trả lời đúng ... nhưng tôi đoán tôi không thể làm điều đó với một lời nhận xét :(

tôi đã phải thay thế:

$(data).find 

với điều này:

$($.parseHTML(data)).find 

Tôi đã thử một cái gì đó tương tự như trước đây, dựa trên các câu trả lời Stackoverflow khác, nhưng tôi đã không thực hiện nó đúng cách vì vậy tôi đã nhận được lỗi này.JQuery unrecognized expression on Ajax response

jQuery + client-side template = "Syntax error, unrecognized expression"

+0

'$ ($. ParseHTML (dữ liệu)). Find' làm việc cho tôi ... –

+0

Nó hoạt động Rất tốt công việc! –

0

Lỗi cú pháp có thể là ở đây:

if (typeof currentFaqCategories !== 'undefined') { 

nào nên đọc:

if (typeof currentFaqCategories != 'undefined') { 
+0

Cả hai đều là các toán tử hợp lệ. Họ chỉ làm những việc khác nhau. – shishirmk

Các vấn đề liên quan