Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript .replace()不再为我工作_Javascript_Jquery_Regex - Fatal编程技术网

Javascript .replace()不再为我工作

Javascript .replace()不再为我工作,javascript,jquery,regex,Javascript,Jquery,Regex,我使用下面的函数已经有一段时间了,非常成功,但就在最近它停止了工作。我没有改变任何事情;相同的浏览器、服务器、相同的jquery库,一切都是一样的,所以我不知道出了什么问题。以下函数获取长字符串并将其转换为对象: $(function() { var _sid = getUrlVar('AICC_SID'); var _url = getUrlVar('AICC_URL'); $.get(_url,{command:"GetParam",version:

我使用下面的函数已经有一段时间了,非常成功,但就在最近它停止了工作。我没有改变任何事情;相同的浏览器、服务器、相同的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()
似乎没有运行。函数将字符串转换为对象,但它总是返回空对象。希望这能解决问题。

尝试从正则表达式中删除
\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;
    }

您看到了什么错误?最后两行与您的正则表达式不匹配,也不符合您在ObjectName上生成键/值对的要求没有引发错误,.replace()甚至没有运行。我没有投反对票,但我想这是因为你没有描述什么是真正的错误。你只是说它不起作用。问题必须:“包括尝试的解决方案,为什么它们不起作用,以及预期的结果”您的建议有效,但我正在转换的字符串似乎在每行后面都有
/n
,因此在
控制台.log()
中会显示一行新行。我已更新了答案。如果您成功,请告诉我。好的,我会尝试,谢谢您的时间(顺便说一句:)只是尝试了一下,它似乎对
/n
没有任何作用。