0

我有一个表列出从数据库中提取的值,然后我收集这些值并将它们保存到一个数组中以发送回我正在使用的数据库(使用 JSON)

        $('#ing_table tr').each(function(row, tr){
            ingredients[row] = {
                "ing" : $(tr).find('input:eq(0)').val(),
                "amt" : $(tr).find('input:eq(1)').val(),
                "meas" : $(tr).find('option:selected').text()
            };
        });

获取此信息。通常一切都很好,除了偶尔填充“ing”行的一些字符串有引号(“),这会搞砸。我试过这个:

        $('#ing_table tr').each(function(row, tr){
            ingredients[row] = {
                "ing" : $(tr).find('input:eq(0)').val().replace('"', ' '),
                "amt" : $(tr).find('input:eq(1)').val(),
                "meas" : $(tr).find('option:selected').text()
            };
        });

但我得到一个“无法调用未定义的方法“替换”

注意:上面的代码在返回成分的函数 stroreIng() 中找到。我用了:

 var recIng = storeIng();
 recIng = $.toJSON(recIng);

这是它在 JSON 中的 " 之前添加 \\ 任何帮助将不胜感激的地方

4

2 回答 2

0

似乎input某些行根本没有任何存在。如果选择器为空,则val()返回undefined

$().val() == undefined //true

所以你的replace方法在这种情况下会失败。你应该使用这样的东西:

$('#ing_table tr').each(function(row, tr){
    ingredients[row] = {
        "ing" : ($(tr).find('input:eq(0)').val() || "").replace('"', ' '),
        "amt" : $(tr).find('input:eq(1)').val(),
        "meas" : $(tr).find('option:selected').text()
    };
});
于 2013-11-07T14:57:28.493 回答
0

我无法让 replace() 方法在这里工作,但我去了 php 页面并能够使用 str_replace() 删除转义的引号。现在一切正常。谢谢你的帮助!

于 2013-11-07T15:24:44.443 回答