我正在使用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的表单中创建的按钮元素的变量数据。
重点是:如何将“data”变量从ajax请求成功函数内创建的元素传递给click函数?
答案 0 :(得分:0)
'data'变量应该可以在click函数中通过闭包访问,不需要在那里传递它。通过将其作为参数传递,您将其覆盖为具有“未定义”值的闭包。所以只需从参数中删除它:
$(insertbutton).click(function(event) {
event.preventDefault();
alert(data.title);
});