2013-10-29 27 views
5

Tôi đang cố gắng lấy dữ liệu bằng cách sử dụng jquery ajax, mọi thứ hoạt động tốt và tôi có được những gì tôi muốn, nhưng tôi không thể hiển thị nó vì tôi nhận được Uncaught TypeError: Không thể đọc thuộc tính 'display' của undefined.jQuery UI: Uncaught TypeError: Không thể đọc thuộc tính 'display' của undefined

Ở đây mã. Bất kỳ ý tưởng?

/* 
* Get the data from the ajax call and display a dialog 
*/ 

function CreateDialog(email) { 

    // get the data from the ajax call 
    var promise = AjaxSubscribe(email) 

    // if data are available, show the dialog 
    promise.success(function (data) { 
     // data is a simple html code 
     var dialog = $(data); 

     // can't setup the dialog! Error 
     // Uncaught TypeError: Cannot read property 'display' of undefined 
     dialog.dialog({ 
      autoOpen: false, 
      modal: true, 
      show: { 
       effect: "blind", 
       duration: 1000 
      }, 
      hide: { 
       effect: "explode", 
       duration: 1000 
      } 
     }); 

     dialog.dialog("open"); 
     return false; 
    }); 
} 

Đây là sản phẩm của dữ liệu

console.log(data) 

<p>Data debugging</p> 
<ul> 
    <li>Ip address: 193.125.139.18</li> 
    <li>Country Name: Italy</li> 
    <li>Country Code: IT</li> 
    <li>Email: [email protected]</li> 
</ul> 
+2

Dữ liệu 'chứa' khi nào nó được trả về từ cuộc gọi ajax? – glomad

+0

Vì lý do nào đó, tôi không nghĩ rằng 'dữ liệu' là những gì bạn nghĩ. 'console.log (dữ liệu)' và chia sẻ kết quả đầu ra! – tymeJV

+0

Đã thêm dữ liệu đầu ra vào câu hỏi. Tất nhiên IP là giả mạo: D –

Trả lời

7

Hãy thử gói HTML dữ liệu của bạn bên trong một container, hoặc trên backend hay frontend:

var dialog = $('<div/>').html(data); 

Tôi không chắc chắn .dialog() sẽ hoạt động trên nhiều đoạn tài liệu (bạn có một số <p> và một nội dung <ul>). $(data) sẽ là một mảng có 2 phần tử không phải là những gì mà .dialog() mong đợi.

+0

Đây phải là giải pháp. Giao diện người dùng jQuery mong đợi các thành phần nằm trong một bố cục nhất định và bị lẫn lộn khi chúng không có. –

+0

Phải! Cảm ơn câu trả lời, tôi thêm vào backend div và tất cả mọi thứ hoạt động! –

+0

Tôi đã có cùng một vấn đề và bao bọc div là giải pháp. Trên thực tế cho tôi hình thức đã được hiển thị, nhưng kịch bản đã bị rơi với cùng một thông báo lỗi ngay sau khi hiển thị biểu mẫu. – alexg

0

Đảm bảo bạn không có dòng trống ở cuối tệp. Một số trình soạn thảo như Vim tự động thêm một dòng trống để tôn trọng tiêu chuẩn POSIX Why would Vim add a new line at the end of a file? Với Tuyệt vời, bạn có thể hiển thị dòng trống này.

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