Jquery文件上传器blueimp,意外的令牌/字符

时间:2014-11-06 22:05:57

标签: javascript jquery json upload blueimp

首先让我告诉你,我已经找到了一些答案,虽然这对我有所帮助,但我的主要问题仍未得到解决。

我使用了文件上传器(版本9.8.0)@ http://blueimp.github.io/jQuery-File-Upload/

(第1个问题)
在我开始上传之前,一切似乎都运行良好。完成上传后,它会为每个图像显示以下错误(而不是“上传成功”消息)。

在Google Chrome上,它说:“SyntaxError:意外的令牌<”
在Mozilla FireF上。它说:“SyntaxError:JSON.parse:JSON数据第1行第1列的意外字符”

我搜索了一些解决方案,但我无法弄清楚如何应用这些解决方案。顺便说一句,它添加了图像,尽管有错误。

9 个答案:

答案 0 :(得分:11)

如果查看浏览器中的网络选项卡,您调用的方法是抛出一个带有html的错误页面(以<开头,并且无法在JSON中解析)。

例如在谷歌浏览器中:

  1. 打开调试器:F12
  2. 转到网络标签
  3. 执行上传
  4. 您应该会看到“网络”标签中发送的请求
  5. 点击该错误请求
  6. 这将打开一个新窗口,其中包含来自服务器的响应的选项卡。这种反应很可能是某种异常消息。
  7. 我在ASP.Net MVC上有一个类似的问题,当一个参数被发送为null并且它在控制器上不可为空时,它有一个不同的上传器。

答案 1 :(得分:1)

SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data 看看这个SO,看看你的问题是否相关 基本上,这可能意味着返回的成功消息没有正确的HTML标记,因此浏览器无法显示它们。

答案 2 :(得分:1)

很可能你正在尝试JSON.parse服务器提供的错误消息或其他非JSON响应,这可能是HTML,因为它被阻塞了第一个字符。

我打开控制台,获取产生错误的页面,在开发工具的网络选项卡中找到请求,并检查上传请求的响应选项卡以查看实际返回的内容。

希望看到响应会引导您找到解决方案(如修复错误消息)或可以提出的更具体的问题。

答案 3 :(得分:1)

我通过最后用 index.php 编辑 main.js 文件中的网址解决了这个问题,如下所示:

// Initialize the jQuery File Upload widget:
$('#fileupload').fileupload({
    // Uncomment the following to send cross-domain cookies:
    //xhrFields: {withCredentials: true},
    url: 'imagegallery/server/php/index.php'
});

答案 4 :(得分:0)

这件事发生在我身上。也许这是文件夹权限。 我设置了server / php / files的读写权限,并且有效。

答案 5 :(得分:0)

由于post_max_size和upload_max_filesize太小,并且因为它使用blob发送文件数据,所以它会生成此错误。我在我的php.ini中增加了它们,现在就像魅力一样

答案 6 :(得分:0)

这也发生在我身上。我在Linux服务器上使用PHP。我发现实际上有反斜杠" \"在4或5个地方的代码中它们导致了错误。这样做:

  1. 在编辑器中打开/server/php/UploadHandler.php的副本
  2. 搜索反斜杠:\
  3. 请注意反斜杠的每个位置。
  4. 如果是在" new"之后?在调用处理程序之前,你可以     删除反斜杠。
  5. 检查第308,790,814,816,819,822,825,828,831,836,842,895,915,973,981和1058行。所有对Imagick()的调用;似乎在他们面前有一个。

    我删除了所有这些反斜杠,但不需要关闭错误报告。

    示例:

    查找代码:

    $file = new \stdClass();
    

    替换为:

    $file = new stdClass();
    

答案 7 :(得分:0)

这是最好的答案,我遇到了同样的问题,但是按照以下步骤操作,我很容易看到错误。

1-打开调试器:F12

2-转到“网络”标签

3-进行上传

4-您应该在“网络”标签中看到发送的请求

5-单击该错误请求

6-这将打开一个新窗口,其中包含用于服务器响应的选项卡。此响应很可能是某种异常消息。

感谢StephanC

答案 8 :(得分:-1)

我在php 5.6中遇到过这个问题但在php 5.3中没有。我解决了#34;通过编辑upload.php文件中的错误报告级别来解决此问题:

//error_reporting(E_ALL | E_STRICT); error_reporting(E_STRICT);