0

私はしばらくの間、次の関数を使用して大成功を収めてきましたが、最近、機能しなくなりました。何も変更していません。同じブラウザー、サーバー、同じ jquery ライブラリ、すべてが同じなので、何が問題なのかわかりません。次の関数は、長い文字列を受け取り、それをオブジェクトに変換します。

$(function()
{   
    var _sid    = getUrlVar('AICC_SID');
    var _url    = getUrlVar('AICC_URL');
    $.get(_url,{command:"GetParam",version:"2.2",session_id:_sid},function(response)
    {
        var _obj = toJSON(response);
        console.log(_obj);
    });
});

function toJSON(str) 
{
    var obj = {};
    str.replace(/([^=]+)=(.*)\n/g, function (_, name, value)
    {
        console.log('name : ' + name);
        console.log('value : ' + value);
        obj[name] = $.trim(value);
    });
    return obj;
}

変換された文字列は次のとおりです。

ERROR=0
ERROR_TEXT=Successful
VERSION=2.2
AICC_DATA=[CORE]
STUDENT_ID=0425655
STUDENT_NAME=Doe, John B
SCORE=
TIME=00:00:00
CREDIT=C
LESSON_LOCATION=1_5
LESSON_STATUS=NULL
[Core_Lesson]
[Objectives_Status]

問題は、.replace()実行されていないように見えることです。このtoJSON()関数は文字列をオブジェクトに変換しますが、常に空のオブジェクトを返します。うまくいけば、何が問題なのかが明らかになります。

4

1 に答える 1

0

正規表現から を削除してみてください\n

したがって、次のようになります。

str.replace(/([^=]+)=(.*)/g, ...

改行に関連する問題だと思います。

アップデート

これで更新toJSON()してみてください:

function toJSON(str) {
        var obj = {};
        str.replace(/([^=]+)=(.*)/g, function (_, name, value) {
            name = name.replace(/\n/g, '');

            console.log('name : ' + name);
            console.log('value : ' + value);
            obj[name] = $.trim(value);
        });
        return obj;
    }
于 2013-11-08T16:12:55.237 に答える