Chrome上的Ajax通话状态代码0

时间:2018-07-05 11:32:39

标签: c# jquery ajax google-chrome compact-framework

我正在开发一个小页面,该页面使用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中工作?

0 个答案:

没有答案