2017-08-05 181 views
1

所以我有...語法錯誤:未結束的字符串與JSON陣列

var newfavz = 'Array (


[0] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "] 
[1] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "] 
[2] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "] 

) 
'; 

我的console.log,但不知何故,有一個語法錯誤:未結束的字符串。我環顧四周,嘗試使用諸如str_replace「/」和「//」之類的方法,或者像.replace(/ ^/+/g,'')這樣的正則表達式。因爲它看起來像JavaScript不允許將字符串分成多行或類似的東西。

這一切都始於一個SQL查詢,像這樣......

$favurl = []; 
$favquery = "SELECT * FROM userfavs WHERE users = '$username'"; 
$favresult = mysqli_query($conn, $favquery); 

while($row = mysqli_fetch_assoc($favresult)) { 

array_push($favurl, $row['fav_id']); 

之後,我做了

var newfavz = <?php print_r ($favurl); ?> 

導致以上。

有沒有什麼辦法可以用來解決語法錯誤?謝謝!

+2

'echo'結果。打印的字符串在JavaScript環境中是無用的,檢查https://stackoverflow.com/questions/4885737/pass-a-php-array-to-a-javascript-function – undefined

+0

啊對不起,我在使用print_r進行調試時:) – HotPotatos

回答

0

原因多行字符串不允許在JS:

"A 
B" 

是一個語法錯誤。你可能會刪除所有換行符,並與\ n替換它們,或者你使用模板文字:

`A 
B` 

在您的代碼:

var newfavz =` <?php print_r ($favurl); ?>`; 

這麼多有關錯誤。但字符串仍然不可用,需要解析。看看JSON或編寫自己的小解析器。

+0

要添加到此,在服務器上,您應該傳遞給JS之前使用json_encode()方法將數組編碼爲json對象。 – Adriani6

+0

嘿,我忘了添加這個問題,但是我在將數據插入SQL數據庫之前使用了JSON_encode方法。到目前爲止,我發現刪除這個未終止的字符串文字錯誤的唯一方法是做另一個JSON_encode,這非常愚蠢的IMO。 – HotPotatos

+0

嘿男人''事情工作完美,非常感謝! – HotPotatos

0

要麼使用ES6 template literals

var newfavz = `Array (


[0] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "] 
[1] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "] 
[2] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "] 

) 
`; 

或者用反斜槓:

var newfavz = 'Array (\n\ 
\n\ 
\n\ 
[0] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]\n\ 
[1] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]\n\ 
[2] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]\n\ 
\n\ 
)\ 
'; 

或連接:

var newfavz = 'Array (\n' + 
    '\n' + 
    '\n' + 
    '[0] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]\n' + 
    '[1] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]\n' + 
    '[2] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]\n' + 
    '\n' + 
    ')\n'; 

\n用於表示一個newline

+0

謝謝你!我用了''字符,它完美的工作! – HotPotatos

0

你必須放一個反斜槓在每行的末尾有一個多行字符串:json_encode`而不是使用`print_r`的`

var newfavz = 'Array (\ 
[0] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]\ 
[1] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]\ 
[2] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]\ 
)\ 
';