Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax请求成功,但结果为空_Javascript_Jquery_Html_Ajax_Google Chrome Extension - Fatal编程技术网

Javascript Ajax请求成功,但结果为空

Javascript Ajax请求成功,但结果为空,javascript,jquery,html,ajax,google-chrome-extension,Javascript,Jquery,Html,Ajax,Google Chrome Extension,我正在构建一个Google Chrome浏览器扩展,它使用$.ajax请求将数据从网页发送到我的服务器(当前使用localhost托管)。在扩展有权访问的网页()上下文中执行的content\u script.js文件运行以下代码: //note: encode64String is assigned earlier in the script... $.ajax({ type: "POST", url: "http://localhost:8888/quartzsite/uploadendp

我正在构建一个Google Chrome浏览器扩展,它使用
$.ajax
请求将数据从网页发送到我的服务器(当前使用localhost托管)。在扩展有权访问的网页()上下文中执行的
content\u script.js
文件运行以下代码:

//note: encode64String is assigned earlier in the script...

$.ajax({
type: "POST",
url: "http://localhost:8888/quartzsite/uploadendpoint.php",
type: "jsonp",
data: {img: encode64String},
contentType: "application/x-www-form-urlencoded;charset=UTF-8",
success: function(data){
    console.log("The ajax request succeeded!");
    console.log("The result is: ");
    console.log(data);
},
error: function(){
    console.log("The request failed");
}
});
问题是,
Ajax
请求成功,但它返回的
data
参数为空

在运行代码后,控制台如下所示:

当前,
uploadendpoint.php
文件的内容包括:

<?php
  header("Access-Control-Allow-Origin: *");
  echo 'This comes from php file'; die();
?>

<!DOCTYPE html>
<html>
<head>
    <title>Title of the document</title>
</head>

<body>
The content of the document......
</body>

</html>

文件标题
文件的内容。。。。。。
这意味着
数据
变量中至少应该返回一些内容

我进一步确认请求成功,因为当我将请求发送到断开的url(即uploaddddendpoint.php)时,
$.ajax
error
参数中的代码被执行

我读过类似的问题,如,但没有用

更新

我已经完全删除了无效的第二个
类型:“jsonp”
参数,并添加了
数据类型:“text/html”
。现在,每次运行代码时,我都会收到一个失败的
ajax
请求

更新:奇怪地将
数据类型:“text/html”
更改为
数据类型:“html”
会导致
ajax
请求成功,但再次使用一个空的
数据
变量。 更新:使用开发工具包监控网络XHR时,以下是发送/响应消息:

关于可能复制到的标志
我建议不要这样!我已经调查了这个问题,但问题似乎并不相同。

为什么在AJAX请求中有两个
类型
字段<代码>jsonp
POST

$.ajax({
    type: "POST",  // OK
    url: "http://localhost:8888/quartzsite/uploadendpoint.php",
    type: "jsonp", // ???
    // ...
});
更新:

我认为您应该使用URL的相对路径。尝试将您的请求更改为以下内容:

$.ajax({
    type: "POST",
    url: "/quartzsite/uploadendpoint.php",
    dataType: "text/html",
    data: {img: encode64String},
    success: function(data){
        console.log("The ajax request succeeded!");
        console.log("The result is: ");
        console.dir(data);
    },
    error: function(){
        console.log("The request failed");
    }
});
您可以看到,我将URL替换为
/quartzsite/uploadendpoint.php
。这可能会解决问题。。。绝对URL可能会发出一个跨域请求的信号,这不是您想要的


另外,作为补充说明,没有必要设置contentType,因为您将其设置为的已经是默认值。如果要发送JSON或XML,则需要设置contentType。

解决此问题的一种方法: 在chrome中,答案是空的。 在FF中,在答案中显示php警告 警告:。。。。在线


删除警告后,chrome开始显示响应。

在将响应数据发送到ajax时使用“echo”而不是“return”。

在php文件的第一行尝试以下操作:
-检查您是否在控制台中得到了响应。网络选项卡显示了什么?尝试删除
jsonp
type。转到chrome开发工具的网络窗格,查看脚本的内容returns@akonsu我删除了
类型:“jsonp”
,但没有任何更改。最初我没有指定类型,但这不起作用,所以我想尝试
jsonp
。我暂时不打印。网络选项卡仅显示一个失败的
GET
请求,该请求来自
adzerk1_2_4_43,adzerk2_2_17_45?keywords=javascript,jquery…
,但似乎来自此页面(我现在正在堆栈上测试)。@Brannon重新编辑:devtools的屏幕截图表明您的问题与JS/jquery无关,但是由服务器端的某些东西引起的。在PHP代码段中,您已经设置了一个响应头。但是,此标题在您的屏幕截图中不存在。另外,
Content-Length:0
表示服务器的响应实际上是空的。捕捉得好!我已经删除了“jsonp”类型并添加了正确的
数据类型
。请求现在完全失败了(这可能实际上表明它以前给出了一个假阳性)。这是一种处理跨域请求的高级方法,我怀疑这是否是您所需要的。你还在里面吗?。。。想详细说明一下吗?Echo不是我听说过的javascript函数。。。我不知道你的意思。@leinaD_natipaC我在控制器里说。不在JS中。这恰好是我的问题所在。这也为我解决了问题。