我正在构建一个 Google Chrome 浏览器扩展,它使用$.ajax
请求将数据从网页发送到我的服务器(当前使用 localhost 托管)。content_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
它返回的参数是空的......
代码运行后控制台如下所示:
目前该uploadedendpoint.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>
这意味着至少应该在data
变量中返回一些东西。
我进一步确认请求是成功的,因为当我将请求发送到损坏的 url(即 uploadddddendpoint.php)时,会执行$.ajax
'serror
参数中的代码。
我读过类似的问题,如jQuery $.ajax response empty,但仅在 Chrome 中但无济于事......
更新:
我已经type: "jsonp"
完全删除了无效的第二个参数并添加了dataType: "text/html"
. 我现在ajax
每次运行代码时都会收到失败的请求。
更新:奇怪地更改dataType : "text/html"
为dataType : "html"
导致ajax
请求成功但再次使用空白data
变量。
更新:当使用开发工具包监控网络 XHR 时,这些是发送/响应消息:
关于 不可能在 Chrome 扩展中跨站点 ajax api 调用的可能重复标志?我建议否则!我已经调查了这个问题,但问题似乎并不相同。