【问题标题】:'Resource interpreted as Script but transferred with MIME type text/html' response“资源解释为脚本,但使用 MIME 类型文本/html 传输”响应
【发布时间】:2014-06-14 00:15:00
【问题描述】:

我有一个对 PHP(在不同域上)登录脚本的 ajax 调用,如下所示:

var request = $.ajax({
        crossDomain: true,
        url: "http://www.domain.com/PHP/fct.login.php",
        type: "POST",
        data: $('#loginForm').serialize(),
        dataType: "jsonp",
        contentType: "application/json; charset=utf-8",
    });

在我的 PHP 脚本中,我有以下内容:

<?php
header('Content-Type: text/javascript');
echo $_GET['callback'] . '(' . "{'status' : '1'}" . "{'text' : 'ok'}" . "{'userid' : $member['user_id']}" . ')';
?>

但它不起作用。在我的控制台中,我只收到一条Resource interpreted as Script but transferred with MIME type text/html 消息...

编辑:我按照“Felix Kling”的说法更新了我的回复,但现在我遇到了解析错误。

我更新后的回复如下:

echo $_GET['callback'] . "({status : 1},{text : 'ok'},{userid : ".$member['user_id']."})";

错误看起来像:

Error: Parse error on line 1:
{status : 1},{text :
-^
Expecting 'STRING', '}'

编辑 2:没关系,它现在可以使用(更新后的响应)。当我通过浏览器直接查看php 脚​​本时(没有ajax 调用等),我刚刚得到parse error

【问题讨论】:

  • 您没有检索 javascript。删除header 声明。
  • @Ohgodwhy:响应当然是 JavaScript。
  • @FelixKling 你怎么会这么说?
  • 打开所有 PHP 错误和警告,然后查看响应和 PHP 错误日志。我怀疑你会在某处出现“无法设置标题,因为输出已经开始”错误。
  • 如我所说,您生成的代码无效。看看我的例子。您不能将多个对象文字放在一起。要么你想要一个文字:callback({status: 1, text: 'ok'}),要么需要多个参数,用逗号分隔:callback({status: 1}, {text: 'ok'});,尽管我认为 jQuery 只希望将一个参数传递给回调。

标签: javascript php ajax cross-domain


【解决方案1】:

您生成的 JS 代码不正确。它看起来像

callbackName({'status': '1'}{'text' : 'ok})

但你不能将对象文字一个接一个地放置。

要么你必须生成一个文字:

callback({status: 1, text: 'ok'})

或多个参数,用逗号分隔:

callback({status: 1}, {text: 'ok'})

虽然我认为 jQuery 只希望将一个参数传递给回调。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-05
    • 2011-07-18
    • 2014-07-12
    • 2014-12-01
    • 2014-07-15
    • 2012-06-18
    • 2011-12-04
    相关资源
    最近更新 更多