我正在开发一个小页面,该页面使用ajax加载一些数据。
在Mac Safari上,所有功能都可以正常运行,但不能在Chrome上运行。
服务器实际上是我使用监听器为Windows CE编写的一个小型c#程序,如下所示:
TcpListener listener = new TcpListener(IPAddress.Any, 1889);
listener.Start();
TcpClient client = listener.AcceptTcpClient();
NetworkStream nwStream = client.GetStream();
byte[] buffer = new byte[client.ReceiveBufferSize];
int byteRead = nwStream.Read(buffer, 0, client.ReceiveBufferSize);
string dataRecieved = Encoding.ASCII.GetString(buffer, 0, byteRead);
//using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"/Hard Disk2/ajax_12.txt", true))
//{
// string m = String.Format("{0}", dataRecieved);
// file.WriteLine(m);
//}
int pFrom = dataRecieved.IndexOf("GET /?") + "GET /?".Length;
int pTo = dataRecieved.LastIndexOf(" H");
string result = dataRecieved.Substring(pFrom, pTo-pFrom);
当我收到以下几行内容时,它又可以在野生动物园中正常工作了:
GET /?1 HTTP/1.1
Host: 192.168.1.192:1889
Origin: http://192.168.1.192
Connection: keep-alive
Accept: */*
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1.1 Safari/605.1.15
Accept-Language: en-us
Referer: http://192.168.1.192/ajax.html
Accept-Encoding: gzip, deflate
因此,使用一些字符串操作,我从获取行中获取了数字1。
我使用的Ajax调用是这样的:
var url = "http://192.168.1.192:1889"
var max_retries = 10;
var ajax_timeout = 1000;
$(document).ready(function() {
var retries = 0;
$.ajax({
url : url,
data: "1",
crossDomain: true,
success: function(result)
{
$("#AxSwitch").attr("data-enabled", JSON.parse(result)[0])
$("#AxSwitch").prop("checked", (JSON.parse(result)[0] === "True"))
$("#AxSelect").val(JSON.parse(result)[1]).formSelect();
},
error: function(jqXHR, textStatus, errorThrown)
{
console.log(jqXHR, textStatus, errorThrown)
if (retries < max_retries)
{
$.ajax(this);
retries++;
}
else
{
M.toast({
html: "There was a problem. Please check the plc and try reloading the page!"
});
return;
}
},
timeout: ajax_timeout
})
})
使用chrome时出现问题。 我什么也没收到,所以这当然给我一个错误! 另外,我从错误中得到的状态码为0,并且因为设置为1000,所以我得到了超时错误。
是什么原因导致Chrome出现此错误并在Safari中工作?