Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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 POST不使用Safari_Javascript_Jquery_Html_Ajax_Post - Fatal编程技术网

Javascript $.ajax POST不使用Safari

Javascript $.ajax POST不使用Safari,javascript,jquery,html,ajax,post,Javascript,Jquery,Html,Ajax,Post,我使用ESP32作为web服务器,一些值可以在web和micro端进行修改,为此,我使用$.getJSON从ESP32检索数据并刷新网页(一切正常),使用$.ajax从网页向服务器发送数据,这部分代码也可以正常工作,除了Safari,以下是我的代码: var data = {'name':'John','surname':'Smith'}; $.ajax({ url: 'setConfig', type: 'POST',

我使用ESP32作为web服务器,一些值可以在web和micro端进行修改,为此,我使用$.getJSON从ESP32检索数据并刷新网页(一切正常),使用$.ajax从网页向服务器发送数据,这部分代码也可以正常工作,除了Safari,以下是我的代码:

var data = {'name':'John','surname':'Smith'};
$.ajax({
        url: 'setConfig',           
        type: 'POST',   
        contentType:'application/json',
        data: JSON.stringify(data),
        dataType:'json'
        });
我的想法是,阅读url时,我知道发送的是哪些数据,“data:”是这些变量的值。使用Google Chrome,我收到的信息如下:

    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"}
这正是我想要的,但使用Safari浏览器的代码相同:

    POST /azzeraContatori HTTP/1.1
Host: 192.168.1.1
Content-Type: application/json
Origin: http://192.168.1.1
Accept-Language: it-it
Accept-Encoding: gzip, deflate
Connection: keep-alive
Accept: application/json, text/javascript, */*; q=0.01
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1
Referer: http://192.168.1.1/contatori.html
Content-Length: 17
X-Requested-With: XMLHttpRequest
正如您所看到的,除了消息开头缺少的“数据”之外,其他都是一样的,我不明白为什么这个浏览器不发送$.ajax的这部分,如果有人能帮助我,我真的很感激


谢谢。

事实上,它们都有相同的内容长度:17,因此数据可能都发送正确。然而,我注意到chrome中的数据是用gzip编码的,而safari则不是。问题实际上与您如何打印请求有关吗?请求看起来一样,响应呢?@WilliamChong的打印顺序不同,但都有接受编码:gzip,deflate@Musa请原谅我的不足,但我不知道您的响应是什么意思。请求由我的程序用C语言处理,但是没有数据:JSON.stringify(data),我无法提供我需要的信息。Chrome的例子看起来也不正确。请求的主体应该在头之后。