2013-10-29 6 views
5

jquery ajaxを使用してデータを取得しようとしていますが、すべて正常に動作していますが、 TypeError:未定義のプロパティ 'display'を読み取ることができません。jQuery UI:Uncaught TypeError:未定義のプロパティ 'display'を読み取ることができません

ここにコードです。何か案が?

/* 
* 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; 
    }); 
} 

このデータの出力

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

ajax呼び出しから返されるときに 'data'には何が含まれますか? – glomad

+0

何らかの理由で、私はあなたが 'データ'とは思わないと思う。 'console.log(data)'と出力を共有してください! – tymeJV

+0

質問にデータ出力を追加しました。もちろん、IPは偽物です:D –

答えて

7

は、いずれかのバックエンドやフロントエンドに、容器内のデータのHTMLをラップしてみている:

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

私は.dialog()わかりません複数のドキュメントフラグメント(<p><ul>のインラインを持っています)で動作します。 $(data)は、2つの要素を持つ配列で、.dialog()が期待するものではありません。

+0

これは解決策です。 jQuery UIは要素が特定のレイアウトにあることを期待しています。そうでない場合は混乱します。 –

+0

右答えをありがとう、私はバックエンドのdivとすべての作品を追加! –

+0

同じ問題があり、divラッパーが解決策でした。実際に私のためにフォームが表示されていましたが、フォームを表示した直後に同じエラーメッセージが表示されてスクリプトがクラッシュしていました。 – alexg

0

ファイルの最後に空白行がないことを確認してください。 Vimのようなエディタの中には、POSIX標準を守るために空行を自動的に追加するものがあります。Why would Vim add a new line at the end of a file? このサブラインを表示することができます。

関連する問題