0

我在萤火虫中有一个错误:

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

有问题的 var 是一个路径数组 (local) 。一个示例数组如下所示:

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 master ,但我怀疑问题是路径本身作为字符串(可能是:? )因为当我只对数字数组执行相同操作时(例如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();
                        }
                    }
                });
            }

在此之前,变量:

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.ini 中生成的。(内爆()字符串与,

那么路径字符串本身就是问题吗?如果是这样,一个人怎么能通过这样一个 var 的路径?

已解决: 感谢@Aatif Farooq 让我走上了正轨,答案是 json_encode() 可以处理 quores"和转义问题//..

当我搜索addslashes()php 函数时,我找到了json_encode().. 同时,@slashingweapon 做对了..

echo json_encode($ids);
4

3 回答 3

2

路径实际上是一个字符串,因此您应该将路径用单引号或双引号引起来。像:

'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'];
于 2012-11-17T16:17:32.443 回答
1

文本/字符串数据必须添加在单引号或双引号之间,如下所示:

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],因为数字不需要添加在引号内。

于 2012-11-17T16:17:50.020 回答
1

您的问题在于如何对数据进行编码。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;
于 2012-11-17T16:36:11.863 回答