JS和AJAX没有捕获引用错误

时间:2015-05-31 10:23:28

标签: javascript jquery ajax

这是我用JS写的td

'<td contenteditable="true" onBlur="saveToDatabase(this,s1,' + d.pid + ')" onClick="showEdit(this);">' + d.s1+ '</td>' +

我想将saveToDatabase函数值发送到此AJAX代码。

function showEdit(editableObj) {
    $(editableObj).css("background", "#FFF");
}

function saveToDatabase(editableObj,column ,id) {
    $(editableObj).css("background", "#FFF url(loaderIcon.gif) no-repeat right");
    $.ajax({
        url: "saveedit.php",
        type: "POST",
        data: 'column=' + column + '&editval=' + editableObj.innerHTML + '&id=' + id,
        success: function(data) {
            $(editableObj).css("background", "#FDFDFD");
        }
     });
}

但是我收到了一个错误:

  

未捕获的ReferenceError:未定义hashie_sod

问题是什么?

1 个答案:

答案 0 :(得分:0)

听起来hashie_sodd.pid变量中的值。在这种情况下,您需要在构建HTML字符串时将其包装在引号中:

'<td contenteditable="true" onBlur="saveToDatabase(this, s1, \'' + d.pid + '\'")" onClick="showEdit(this);">' + d.s1+ '</td>'

或者更好的是,使用JavaScript附加您的活动:

'<td contenteditable="true" class="content-edit-td" data-s1="' + s1 + '" data-pid="' + d.pid + '">' + d.s1+ '</td>'
$('.content-edit-td').on({
    'click': function() {
        $(this).css("background", "#FFF");
    },
    'blur': function() {
        $(this).css("background", "#FFF url(loaderIcon.gif) no-repeat right");
        $.ajax({
            url: "saveedit.php",
            type: "POST",
            data: 'column=' + $(this).data('s1') + '&editval=' + $(this).html() + '&id=' + $(this).data('pid'),
            success: function(data) {
                $(this).css("background", "#FDFDFD");
            }
        });
    }
});