Php json数据返回无效标签错误

Php json数据返回无效标签错误,php,javascript,jquery,json,Php,Javascript,Jquery,Json,我正在使用函数和它的属性 上载文件时,我不断收到以下错误消息:SyntaxError:invalid label 这是我的JS脚本: jQuery('.uploadImage').live('click',function() { ajaxFileUpload(); }); (...) function ajaxFileUpload(){ jQuery.ajaxFileUpload({ url:'../wp-content/plugi

我正在使用函数和它的属性

上载文件时,我不断收到以下错误消息:
SyntaxError:invalid label

这是我的JS脚本:

  jQuery('.uploadImage').live('click',function() {
      ajaxFileUpload();
  });

 (...)

  function ajaxFileUpload(){
    jQuery.ajaxFileUpload({
            url:'../wp-content/plugins/wp-filebrowser/uploader.php', 
            secureuri:false,
            fileElementId:'uploadFile',
            dataType: 'json',
            success: function (data, status){
                if(typeof(data.error) != 'undefined'){
                    if(data.error != ''){
                        alert(data.error);
                    }else{
                        alert(data.msg);
                    }
                }
            },
            error: function (data, status, e){
                alert(data + ' - ' + status + ' - ' + e);
            }
        }
    )
    return false;   
  }
我的PHP脚本可以工作(在使用json/jquery之前经过测试),但我的PHP文件的json输出肯定有问题。我试过两种方法

我正在使用格式化输出。这是我的一些PHP代码:

    (...)
    // Error message is at this stage empty.
    move_uploaded_file($_FILES["file"]["tmp_name"], $uploadfile);
    $respons = $_FILES["file"]["name"]._e(' successfully uploaded');

    $data = array( "error"=> $error, "msg"=> $respons );
    echo json_encode($data);  
更新
原来我是用WorpAddress的
\u e()
来支持多语言的。问题在于,
\u e()
echo会破坏内容,从而使JSON响应变得混乱。一旦我切换到
,它就工作了


感谢您帮助medebug解决这个问题。

json标签必须用引号括起来:

"'error':" . $error . "'\n";

等等。同样,如果
$error
包含任何引号/冒号,也会“破坏”语法。基本上,您对JSON的开放程度相当于SQL注入。最好不要自己构建JSON字符串,而只是在普通PHP数组/对象上使用
JSON\u encode()
。如果您以某种方式保留了两个版本的输出(
error\u log()
?),则可以传递它们以查看它们有什么问题。

第一种方法不会生成有效的JSON。请看一下
json\u encode()
-函数的输出,该函数正确地生成了它。主要问题是键和值没有用双引号括起来


您是否尝试使用firebug来确定错误的确切来源?每个JSON键都必须是字符串。这显然不是故障线路的情况。

使用
json_encode()
时,您确定输出正确吗?尝试了
echo'('.json_encode($data)。')?我正在使用
echo json\u encode($data)
在另一个项目中,它在那里运行良好。但是,这里我得到了以下输出:
成功上传[{“error”:““msg”:“\uu Untitled-1.jpg”}]
。这似乎不对……看起来无效的JSON是由使用Wordpress的
\u e()
造成的。我明天会研究这个问题。使用双引号并没有什么不同。
$error
$response
都是文本字符串。我在Firebug中没有得到任何反馈。这是因为创建了动态IFrame吗?简单地添加双引号是行不通的。我强烈建议使用
json\u encode()
,因为它可以为您完成一切。是的,iFrame就像独立的浏览器窗口。Firebug只在当前页面上工作。啊啊-可能是我在使用WorpAddress
\u e()
进行语言支持吗?我想我在这个阶段用错了。它是回显文本,而不是将其添加到变量中。。。。我想这就是原因。我将更改
$data[]=array(“error”=>$error,“msg”=>$response)
$data=array(“error”=>$error,“msg”=>$response)
因为您不需要由
[]
创建的额外数组。我已经更新了我的代码来使用它(运气不好):`$data[]=array(“error”=>$error,“msg”=>$response);echo json_编码($data)`捕获在服务器上生成的字符串,并与浏览器接收到的内容进行比较。可能在传输过程中有什么东西在摆弄它(服务器端mod_安全、客户端防病毒等)