[英]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.