Javascript 谷歌浏览器显示AJAX文件上传错误?

Javascript 谷歌浏览器显示AJAX文件上传错误?,javascript,jquery,ajax,google-chrome,Javascript,Jquery,Ajax,Google Chrome,我试图在AJAX的帮助下将一个图像文件异步上传到服务器。该文件通过FIREFOX成功上传,但没有通过Google Chrome 它显示以下错误消息:未捕获SyntaxError,输入意外结束 通过谷歌搜索,我可能会漏掉一两个括号,但我做不到;在我的代码中找不到任何这样的错误。帮忙 代码如下: <input type="file" name="profile_image" onchange="uploadedImage(this)"/> function uploadedImage(

我试图在AJAX的帮助下将一个图像文件异步上传到服务器。该文件通过FIREFOX成功上传,但没有通过Google Chrome

它显示以下错误消息:未捕获SyntaxError,输入意外结束

通过谷歌搜索,我可能会漏掉一两个括号,但我做不到;在我的代码中找不到任何这样的错误。帮忙

代码如下:

<input type="file" name="profile_image" onchange="uploadedImage(this)"/>

function uploadedImage(image)
{
  var file = image.files[0];
  var name = file.name;
  var size = file.size;
  var type = file.type;
  var msg='';
  if(size>500000)
      msg+="File should not be greater than 500kb";
  if(type!="image/jpeg")
      msg+="Only JPEG images are currently supported";
  if(msg!='')
  {
     alert(msg);
     return;
  }   
var formData = new FormData(document.getElementById('edit_settings'));
$.ajax(
  {
    url: 'upload_demo_image.php',  //Server script to process data
    type: 'POST',
    xhr: function()
    {  // Custom XMLHttpRequest
        var myXhr = $.ajaxSettings.xhr();
        return myXhr;
    },
      // Form data
    data: formData,
    //Options to tell jQuery not to process data or worry about content-type.
    cache: false,
    contentType: false,
    processData: false,
    success: function(filename)
    {
       var response = jQuery.parseJSON(filename);
       var newImage=response['filename'][0];
       $("#edit_profile_image_container").html("<img id='edit_profile_image' src='"+newImage+"' alt='Profile Image'/>");
        crop();
    }
 }
 );
PHP代码:

<?php session_start();
require_once 'myfunctions.php';
if(isset($_FILES["profile_image"]["name"]))
{
$query="SELECT * FROM students WHERE email='$_SESSION[user]'";
$result=queryMysql($query);
$row=mysql_fetch_array($result);
$_FILES["profile_image"]["name"]=$row['studentid']."_demo.jpg";
$saveto="uploadDemo/$row[studentid]_demo.jpg";
$tempname=$_FILES["profile_image"]["tmp_name"];
$type=$_FILES["profile_image"]["type"];
$image_check=uploadimage($tempname,$saveto,$type,600);
$filename["filename"][]=$saveto;
header('Content-type :text/JSON');
echo json_encode($filename);
}
?>

就像@Kevin在评论中说的那样: 在php文件中删除行(我不这么认为,这是必要的):

在ajax选项中的js文件中添加:

dataType: 'json',
并删除以下行:

contentType: false,
processData: false,
在成功函数中删除行:

var response = jQuery.parseJSON(filename);

并创建一个console.log(filename.filename);//第一个'filename'是success函数的参数,第二个是php数组$filename[“filename”]中的单元格名称。

应在formData对象中进行如下更改:

var formData = new FormData();
formData.append("profile_image",filename);
此外,自定义xhr函数也不是必需的


上述更改使所有内容在Chrome中都能正常工作。

该错误具体发生在哪里?Ctrl+shift+j,单击error旁边的向下箭头,按照右边的跟踪,直到找到代码或json响应。Chrome的控制台显示错误在“jquery-1.9.1.js:541”中。在展开详细信息时,它显示以下内容:success myfunctions.js:348这意味着Chrome不认为json有效。很可能,这是对的。将您的json粘贴到json验证器中。我在Jsonlint.com上检查了Firebug生成的json结果。它说JSON是有效的!使用为chrome返回的json执行相同的测试。另外,我建议删除
var response=jQuery.parseJSON(文件名)
和设置
数据类型:json
,不过您可能还想在ajax中添加一个错误处理程序。我已经尝试了以上所有方法,但没有成功。请阅读我们的讨论。contentType和processData必须为false才能异步上载图像
var response = jQuery.parseJSON(filename);
var formData = new FormData();
formData.append("profile_image",filename);