Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.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
使用path时数组PHP中的JS-PHP JSON错误_Php_Javascript_Arrays_Json_Path - Fatal编程技术网

使用path时数组PHP中的JS-PHP JSON错误

使用path时数组PHP中的JS-PHP JSON错误,php,javascript,arrays,json,path,Php,Javascript,Arrays,Json,Path,我在firebug中有一个错误: 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\htdoc

我在firebug中有一个错误:

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();
                        }
                    }
                });
            }
在此之前,VAR:

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

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

在您的情况下,它应该是:

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'];
jQuery(document).ready(function($){
    var i;
    var o99_images = <?php echo json_encode($ids); ?>;
    var o99_total = o99_images.length;
    var o99_count = 1;

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

在您的情况下,它应该是:

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'];
jQuery(document).ready(function($){
    var i;
    var o99_images = <?php echo json_encode($ids); ?>;
    var o99_total = o99_images.length;
    var o99_count = 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'];

它与数字配合使用,因为数字不需要加引号。

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

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'];

它与数字一起工作,因为数字不需要加在引号中。

您的问题在于如何对数据进行编码。PHP提供了一个非常有用的函数,
json\u 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数据。它不适用于循环对象或资源,但其他一切都是公平的

因此,您可能不应该
内爆()
您的数据,而是将其作为数组保留。然后代码应该是:

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'];
jQuery(document).ready(function($){
    var i;
    var o99_images = <?php echo json_encode($ids); ?>;
    var o99_total = o99_images.length;
    var o99_count = 1;
jQuery(文档).ready(函数($){
var i;
VarO99_图像=;
var o99_total=o99_images.length;
var o99_计数=1;

您的问题在于如何对数据进行编码。PHP提供了一个非常有用的函数,
json\u 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数据。它不适用于循环对象或资源,但其他一切都是公平的

因此,您可能不应该
内爆()
您的数据,而是将其作为数组保留。然后代码应该是:

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'];
jQuery(document).ready(function($){
    var i;
    var o99_images = <?php echo json_encode($ids); ?>;
    var o99_total = o99_images.length;
    var o99_count = 1;
jQuery(文档).ready(函数($){
var i;
VarO99_图像=;
var o99_total=o99_images.length;
var o99_计数=1;

谢谢你的回答-但一旦我尝试了,它给了我一个
语法错误:格式错误的十六进制字符转义序列
错误。另外,JS会知道解析“数组”吗带引号?谢谢你的回答-但一旦我尝试了,它给了我一个
语法错误:格式错误的十六进制字符转义序列
错误。另外,JS会知道解析“数组”吗带引号?谢谢你的回答-很可能是这样,但是为什么我会得到
SyntaxError:marroformed hexadecimal character escape sequence
错误。因为这个路径中有反斜杠(),所以你需要反斜杠。比如:
o99_images=['C:\\Documents and Settings\\XX\\XX\\xampp\\htdocs\\XX\\XX\\uploads\\images\u to_post\\2000501.freddy.luluu.milano.jpg']
ok,我该怎么做?有js函数来转义URI或URL吗?或者我应该在php中添加它吗?您需要从php中执行此操作。有一个php函数:
addslashes()
谢谢你的回答-很可能是这样,但是为什么我会得到
语法错误:格式错误的十六进制字符转义序列
错误。因为这个路径中有反斜杠(),所以你需要转义所有的反斜杠。比如:
o99_图像=['C:\\Documents and Settings\\XX\\XX\\xampp\\htdocs\\XX\\XX\\uploads\\images\u to_post\\2000501.freddy.luluu.milano.jpg']
ok,我该怎么做?有js函数来转义URI或URL吗?或者我应该在php中添加它吗?您需要从php中执行此操作。有一个php函数:
addslashes()
谢谢,你在我更新问题时写下了答案-但这肯定是正确的答案!
json_encode()
将解决所有问题..感谢您的详细解释,我想这是一个重要的功能,可以放在一个人的武库中..谢谢,您在我更新问题时写下了答案-但这肯定是正确的答案!
json_encode()
将解决所有问题。感谢您的详细解释,我想这是一个重要的功能,可以放在一个人的武库中。。