Tjena hej!
Vet inte riktigt var det här hör hemma, men troligtvis här. Ett PHP-script returnerar en fras som visas i en alertruta, med hjälp av jQuery:
$.ajax({
url: $(this).attr("action"),
type: "POST",
data: { },
dataType: "json",
error: function(){ },
success: function(data){
alert(data.returnMsg);
}
});
data.returnMsg är en PHP-array som jag skriver ut med hjälp av json_encode($arr);
Följande fungerar klockrent:
$Res = array(
"returnMsg" => "Foo\nBar",
);
echo json_encode($Res);
Det blir en radbrytning i alert-rutan, precis som det ska. Men nu hämtar jag fraserna från en XML-fil:
<Item Name="LBL_ACCOUNT_HAS_BEEN_CREATED" Page="1" Js="0">
<Value>Foo\nBar</Value>
</Item>
Och då blir det Foo\nBar i alertrutan. Kollar jag responsen i Chrome Debugger blir det \\n istället för \n.
Om jag gör radbrytning i XML-filen:
<Item Name="LBL_ACCOUNT_HAS_BEEN_CREATED" Page="1" Js="0">
<Value>Foo
Bar</Value>
</Item>
...så fungerar det också.
Men \n översätts inte, utan escapas istället. Osäker på om felet ligger i XML-filen, i PHP-scriptet eller jQuery.
Såhär ser JSON-responsen ut, den första Foo\nBar radbryts, den andra kommer från XML-filen och fungerar inte:
{"hasError":true,"msgError":["Foo\nBar","Foo\\nBar"],"fldError":[],"returnUrl":"\/","returnMsg":"Foo\\nBar"}
Någon som vet varför?
Tack!