gpt4 book ai didi

jquery - 跨域 AJAX 请求在 Android 手机的 native 浏览器上表现异常

转载 作者:行者123 更新时间:2023-11-29 18:22:44 25 4
gpt4 key购买 nike

我的设置是这样的:

  • SQLite 数据库位于我的一个 Apache 文件夹中
  • Perl cgi 脚本位于同一个文件夹中,具有公共(public)权限,因此它可以处理数据库交互
  • 在同一台机器上运行的 C 程序在特定端口上监听特定 JSON 请求,并使用特定格式的 JSON 数据进行响应

主要用 jQuery 和 HTML 编写的网页必须经常访问 SQLite 数据库和 C 程序。它使用 AJAX 请求来实现——这是代码中的一个示例:

function sendCommand(cmd, callback) {
$.ajax({url: "http://192.168.42.90:6112/?cmd=" + cmd,
dataType: "jsonp",
success: function(d,s,x) {
callback(d);
},
jsonpCallback: "json",
error: function(xhr) {
alert('Error: ' + xhr.status);
}
});
}

所以我可能会用类似 sendCommand("get_x", updatePosition) 之类的东西来调用它——这样它就会将 get_x 命令发送到 C 程序,并且如果它得到好的反馈,则通过 updatePosition 运行所述反馈功能。

因此,如果我在同一台机器上的网页上运行,那么所有这一切都非常有效。如果我换到另一台机器——在这种情况下,特别是 Android 手机,通过 USB 连接 IP,它……可以工作。这就是让我感到困惑的地方——它不会悄无声息地失败,就像我习惯了 JavaScript 所做的那样。相反,据我所知,它发出请求,声称它已取回数据,并运行回调函数——只是,根据 C 程序,什么都没有发生;根据 Wireshark,没有发送数据包;它返回的“数据”是一个空的、特殊格式的字符串。如果我期望“(5,5)”作为 C 的输出,它得到的是“(0,0)”——为什么它什么都没有?更不用说用 0 填充“(,)”了?

很奇怪。我已经尝试了各种小东西,比如将数据类型更改为“json”,确保我的所有权限都设置正确等等。我相当确定 Apache 没有干扰,因为日志中没有任何内容——什么让我明白的是,我在 Wireshark 上看不到任何东西。就好像手机没有尝试发出请求一样。

最佳答案

也许它正在缓存 ajax 请求?尝试在您的 jquery ajax 请求中设置 cache:false。

关于jquery - 跨域 AJAX 请求在 Android 手机的 native 浏览器上表现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4440518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com