我正在开发一个chrome扩展,它将一个页面的源代码发送到一个服务器,在该服务器上解析它。
捕获源代码工作正常,如果我在控制台中显示它,它看起来像这样:
然后为了将其推送到我的PHP服务器上,我首先隔离主体的内容(您在前一张图片中看到的内容存储在“result”中):。
html_content=result.queryselectorall('body')[0].outerhtml;
html_content=json.stringify(html_content);
< /代码>
如果我在控制台中显示HTML_内容,我会得到如下信息:

现在我有了一个JSON对象,我尝试通过以下方式发送它:
var xhr=new xmlhttprequest();
xhr.open(“post”,“myapi-url”);
xhr.setrequestheader(“内容类型”,“应用程序/json”);
xhr.send(html_内容);
< /代码>
对URL的调用有效,但我在$\u Post中没有得到任何信息。它是空的
如果我试图分配这样一个特定的变量:
xhr.send('content='+html_content);
< /代码>
它也不起作用。在PHP方面,我只是这样做:
print_r($_post);
< /代码>
这将返回一个空数组。
>更新======>
根据下面的反馈,我对一些事情进行了调整,结果变得更好。正如建议的那样,我使用的是text/plain,并且保持DOM对象的完整性(我不只取主体)。
var xhr=new xmlhttprequest();
xhr.open(“post”,“myapi url”);
xhr.setrequestheader(“内容类型”,“文本/普通”);
xhr.send(内容);
< /代码>
如果我在服务器端使用这个:
$html_content=file_get_contents('php://input');
< /代码>
这个变量如预期的那样包含文本字符串,所以这很好,但是现在如果我尝试解析接收到的HTML,它就会出错。
$html_content=file_get_contents('php://input');
$dom=新建domdocument;
$dom->加载HTML($html_content);
< /代码>
当我这样做的时候,我会收到如下警告:
<b>警告</b>:domDocument::loadHTML():id ghostery实体中尚未定义跟踪程序,第<b>我的URL中的第506行</b>联机<b>25</b><br/>
< /代码>
好像它不能正确理解HTML。
有什么想法吗?

然后,为了将其推送到我的PHP服务器,我首先隔离主体的内容(您在上一张图片中看到的内容存储在“result”中):
html_content = result.querySelectorAll('body')[0].outerHTML;
html_content =JSON.stringify (html_content);
如果我在控制台中显示HTML_内容,我会得到如下信息:

现在我有了一个JSON对象,我尝试通过以下方式发送它:
var xhr = new XMLHttpRequest();
xhr.open("POST", "myAPI_URL");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(html_content);
对URL的调用有效,但我在$\u Post中没有得到任何信息。它是空的
如果我试图分配这样的特定变量:
xhr.send('content='+html_content);
它也不起作用。在PHP方面,我只是这样做:
print_r($_POST);
这将返回一个空数组。
==更新===
根据下面的反馈,我对一些事情进行了调整,结果变得更好。正如建议的那样,我使用的是text/plain,并且保持DOM对象的完整性(我不只取主体)
var xhr = new XMLHttpRequest();
xhr.open("POST", "myAPI URL");
xhr.setRequestHeader("Content-Type", "text/plain");
xhr.send(content);
如果我在服务器端使用它:
$html_content = file_get_contents('php://input');
这个变量如预期的那样包含文本字符串,所以这很好,但是现在如果我试图解析接收到的HTML,它就会出错。
$html_content = file_get_contents('php://input');
$dom = new DOMDocument;
$dom->loadHTML($html_content);
当我这样做的时候,我会收到如下警告:
<b>Warning</b>: DOMDocument::loadHTML(): ID ghostery-no-tracker already defined in Entity, line: 506 in <b> my url </b> on line <b>25</b><br />
好像它不能正确理解HTML。
有什么想法吗?