由于未定义的变量,无法传递AJAX调用

时间:2014-02-15 15:35:25

标签: javascript jquery ajax

无论出于何种原因,当对服务器进行AJAX调用时,控制台一直说我已经分配给它的变量参数在我链接到的上一个函数中是完全有效的。我一直得到的错误是:

Uncaught TypeError: Cannot call method 'split' of undefined.

非常感谢任何帮助。

$("body").on("click", ".edit_tr", function() {
    var ID = $(this).attr('id'); //This is valid.  It works.
    var split = ID.split('_');
    $("#first_" + split[1]).hide();
    $("#last_" + split[1]).hide();
}).change(function() {
    var ID = $(this).attr('id'); //This keeps coming back as undefined.
    var split = ID.split('_');
    var first = $("#first_input_" + split[1]).val();
    var last = $("#last_input_" + split[1]).val();
});

以及一些相关的PHP / HTML:

<tr id="item_<?php echo $id; ?>" class="edit_tr">
    <td>
        <a href="#" class="del_button" id="del-<?php echo $id; ?>">Delete Record</a>
    </td>
    <td class="edit_td">
        <span id="first_<?php echo $id; ?>" class="text">
            <?php echo $firstname; ?>
        </span>
        <input type="text" value="<?php echo $firstname; ?>" size="8" class="editbox" id="first_input_<?php echo $id; ?>" />
    </td>

    <td class="edit_td">
        <span id="last_<?php echo $id; ?>" class="text">
            <?php echo $lastname; ?>
        </span>
        <input type="text" value="<?php echo $lastname; ?>" size="8" class="editbox" id="last_input_<?php echo $id; ?>" />
    </td>
</tr>

1 个答案:

答案 0 :(得分:2)

您在更改处理程序中的this值与body元素有关。你的body元素没有id。我要么这样做:

$(".edit_tr").on("click", function() {

  ...

}.change( ... );

或单独在.edit_tr附加更改事件。