簡體   English   中英

JS-使用路徑時數組php的PHP JSON錯誤

[英]JS - PHP JSON error from array php while using path

我在螢火蟲中有一個錯誤:

SyntaxError: missing ] after element list
var o99_images = [ C:\Documents and Settings\XXXX\Desktop\xampp\htdocs\www.s
--------------------^

所討論的var是路徑數組(本地)。 一個示例數組如下所示:

var o99_images = [C:\Documents and Settings\XX\XX\xampp\htdocs\XX\XX\uploads\images_to_post\2000501.freddy.lulu.milano.jpg,C:\Documents and Settings\XX\XX\xampp\htdocs\XX\XX\uploads\images_to_post\4147941_460s.jpg,C:\Documents and Settings\XX\XX\xampp\htdocs\XX\XX\uploads\images_to_post\732331_26687367.jpg];

我絕不是javascript大師,但是我懷疑問題是因為當我只對數字數組執行相同操作時,路徑本身就是字符串(也許是: ?),這是因為(例如var o99_images = [12,14,15,18]沒問題。

這是JSON函數:

function O99_Do_Action( id ) {
                $.ajax({
                    type: 'POST',
                    url: ajaxurl,
                    data: { action: "ajaxresponse", id: id },
                    success: function( response ) {
                        if ( response.success ) {
                            O99_Do_ActionUpdateStatus( id, true, response );
                        }
                        else {
                            O99_Do_ActionUpdateStatus( id, false, response );
                        }

                        if ( o99_images.length && o99_continue ) {
                            O99_Do_Action( o99_images.shift() );
                        }
                        else {
                            O99_Do_ActionFinishUp();
                        }
                    },
                    error: function( response ) {
                        O99_Do_ActionUpdateStatus( id, false, response );

                        if ( o99_images.length && o99_continue ) {
                            O99_Do_Action( o99_images.shift() );
                        } 
                        else {
                            O99_Do_ActionFinishUp();
                        }
                    }
                });
            }

在此之前,vars:

jQuery(document).ready(function($){
            var i;
            var o99_images = [<?php echo $ids; ?>];
            var o99_total = o99_images.length;
            var o99_count = 1;

                        //... continue vars and function

如您所見,有問題的var是在php中生成的。 (將implode()字符串添加為,

那么路徑字符串本身就是問題嗎? 如果是這樣,如何將路徑傳遞給這樣的var?

解決:由於@Aatif法魯克這讓我在正確的軌道上,得到的答復是json_encode()可以同時處理的quores "和逃避問題// ..

當我搜索addslashes() php函數時,我發現了json_encode() ..同時,@ slashingweapon正確了..

echo json_encode($ids);

Path實際上是一個字符串,因此您應將路徑用單引號或雙引號引起來。 喜歡:

'c://any-path/to/file.php'

在您的情況下,應為:

var o99_images = ['C:\Documents and Settings\XX\XX\xampp\htdocs\XX\XX\uploads\images_to_post\2000501.freddy.lulu.milano.jpg','C:\Documents and Settings\XX\XX\xampp\htdocs\XX\XX\uploads\images_to_post\4147941_460s.jpg','C:\Documents and Settings\XX\XX\xampp\htdocs\XX\XX\uploads\images_to_post\732331_26687367.jpg'];

文本/字符串數據必須添加在單引號或雙引號之間,如下所示:

var o99_images = ['C:\Documents and Settings\XX\XX\xampp\htdocs\XX\XX\uploads\images_to_post\2000501.freddy.lulu.milano.jpg', 'C:\Documents and Settings\XX\XX\xampp\htdocs\XX\XX\uploads\images_to_post\4147941_460s.jpg,C:\Documents and Settings\XX\XX\xampp\htdocs\XX\XX\uploads\images_to_post\732331_26687367.jpg'];

它適用於數字[5, 88, 8]因為不需要在引號中添加數字。

您的問題在於如何編碼數據。 PHP提供了一個非常有用的函數json_encode() ,無論何時要將PHP數據轉換為Javascript文字,都應使用該函數。

例如,如果要將字符串轉換為Javascript字符串:

php > $x = 'C://some/series/of/path/segments';
php > echo json_encode($x);
"C:\/\/some\/series\/of\/path\/segments"

如果要將字符串數組轉換為Javascript字符串數組,請執行以下操作:

php > $x = array('a', 'b', 'c');
php > echo json_encode($x);
["a","b","c"]

您甚至可以對數字,布爾值和復雜對象執行此操作。 任何引用,轉義和編碼都將得到處理。 該技巧適用於任何可以序列化的PHP數據。 它不適用於周期性對象或資源,但其他一切都是公平的游戲。

因此,您可能不應該對數據進行implode() ,而應將其保留為數組。 然后代碼應該是:

jQuery(document).ready(function($){
    var i;
    var o99_images = <?php echo json_encode($ids); ?>;
    var o99_total = o99_images.length;
    var o99_count = 1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM