无法从jquery的成功中将值传递给javascript函数

时间:2011-08-01 08:56:22

标签: javascript jquery

我在jquery成功调用javascript函数文件名,如下所示,但我无法在javascript中获取p

    success: function(result) {
 var htmlString = [result];
        for (i = 0; i < htmlString.length; i++) {
            var p = htmlString[i].Number;
            $('#MyGrid tbody').append('<tr><td><a rel="' + p + 
                '" href="#" onclick="filename(p);" class="filePreview"></a></tr>');
        }
    }

如何获取文件名中的p?

感谢,

michaeld

3 个答案:

答案 0 :(得分:2)

尝试 -

success: function(result) {
for (i = 0; i < htmlString.length; i++) {
                    var p = htmlString[i].Number;
                    $('#MyGrid tbody').append('<tr><td><a rel="' + htmlString[i].Number+ '" href="#" onclick="filename(' + p + ');" class="filePreview">/a></tr>');
            }

答案 1 :(得分:1)

htmlString是一个长度为1的数组。没有必要循环它。在我看来你可以做到:

success: function(result) {
    $('<tr />').append(
        $('<td />', {
            rel: result.Number,
            href: '#',
            'class': 'filePreview',
            click: function() { filename(result.Number)}
        })
    ).appendTo('#MyGrid tbody');
}

顺便说一下。如果a元素不包含任何文本,则任何人都无法单击该链接。


除了可能的其他错误/不良做法之外,为什么onclick="filename(p);"不起作用?

之前声明的p不在评估filename(p)时可以访问的任何范围内(单击时)。它只是success处理程序的本地。在字符串中写入字符p与当前范围中的变量p完全无关。

答案 2 :(得分:0)

代码中有拼写错误,您没有关闭a-tag