0

jqueryを使用してjavascriptで小さなアプリケーションを開発していますが、小さな問題があります。

私はこの機能を持っています

function cercahq(urlvalue) {
    $.ajax({
    type: "POST",
    url: "data.php",
    data: "do=urlget&url=" + urlvalue,
    dataType: "html",
    success: function(msg) {
        var data = eval('(' + msg + ')');
        $("#searchbar").css({'background-color': '#C33'});
        // creates element
                var insertform = document.createElement('form');
        insertform.id = "insertform";
        var insertbutton = document.createElement('button');
        var insertbuttonlabel = document.createTextNode('Insert');
        insertbutton.appendChild(insertbuttonlabel);
        insertform.appendChild(insertbutton);
        $("#searchbar").append(insertform);

       $(insertbutton).click(function(event, data) {
             event.preventDefault();
             alert(data.title);
        });

        stampa(msg)
        },
    error: function()
      {
        alert("Error");
      }
});

}

この関数は、php スクリプトから json データを取得し、それを評価してページに出力する関数 (stampa) に渡しますが、json からの値を通知する stampa 関数の外にボタンを作成する必要があります...そのため、success イベント内に別の eval を挿入して ajax msg を取得し、insertform というフォーム内に作成したボタン要素に渡す変数データを作成しました。

ポイントは、「データ」変数を ajax リクエスト成功関数内で作成された要素からクリック関数に渡す方法です。

4

1 に答える 1

0

「データ」変数は、クロージャーを介してクリック関数内でアクセスできる必要があります。そこに渡す必要はありません。パラメータとして渡すことで、「未定義」値でクロージャとしてオーバーライドします。したがって、パラメーターから削除するだけです。

 $(insertbutton).click(function(event) {
         event.preventDefault();
         alert(data.title);
    });
于 2013-10-12T08:39:34.917 に答える