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 に答える