我将ESP32用作Web服务器,可以在Web和Micro端修改一些值,为此,我使用$ .getJSON从ESP32检索数据并刷新Web页面(一切正常)和$ .ajax将数据从网页发送到服务器,这部分代码也可以正常工作,除了Safari之外,这是我的代码:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:apply-templates select="*"/>
</xsl:template>
<xsl:template match="*">
<xsl:if test="(not(.='') and not(.=0))">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
我的想法是,读取url可以理解哪些数据正在发送,而“ data:”是这些变量的值。使用Google Chrome浏览器,我会收到以下信息:
var data = {'name':'John','surname':'Smith'};
$.ajax({
url: 'setConfig',
type: 'POST',
contentType:'application/json',
data: JSON.stringify(data),
dataType:'json'
});
这正是我想要的,但是使用Safari浏览器的代码相同:
POST /azzeraContatori HTTP/1.1
Host: 192.168.1.1
Connection: keep-alive
Content-Length: 17
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://192.168.1.1
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
Content-Type: application/json
Referer: http://192.168.1.1/contatori.html
Accept-Encoding: gzip, deflate
Accept-Language: it-IT,it;q=0.9,en-US;q=0.8,en;q=0.7
{"name":"John","surname":"Smith"}
正如您看到的一样,除了消息开头缺少“数据”外,我无法理解为什么如果有人可以帮助我,此浏览器为什么不发送$ .ajax的这一部分,非常感谢。
谢谢。