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),但我需要在 stampa 函数之外创建一个按钮,该按钮告诉我来自 json 的值...因此,在成功事件中,我插入了另一个 eval 来获取 ajax msg 并创建应该传递给我在名为 insertform 的表单中创建的按钮元素的变量数据。

关键是:如何将“数据”变量从在 ajax 请求成功函数中创建的元素传递给 click 函数?

4

1 回答 1

0

'data' 变量应该可以通过闭包在 click 函数内部访问,无需将其传递到那里。通过将其作为参数传递,您可以将其覆盖为具有“未定义”值的闭包。所以只需从参数中删除它:

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