为了账号安全,请及时绑定邮箱和手机立即绑定

JQuery ajax GET 请求调用成功,并截断数据

JQuery ajax GET 请求调用成功,并截断数据

largeQ 2022-09-16 21:03:07
我正在尝试通过 JQuery ajax GET 请求从我的服务器检索大量数据。返回的数据将被截断(见下图)。当我通过我的Web浏览器直接导航到URL发出相同的确切请求时,我得到了完整的响应,这是一个JSON对象(见下图)。我最初在ajax调用中将数据类型选项设置为“json”,但我将其切换为“文本”,因为正在触发ajax错误函数(无法解析截断的json)。现在,它调用成功函数,尽管它尚未完成接收数据。还有几点值得注意:偶尔它会工作并加载所有数据,但大多数时候仍然会失败。我正在使用节点.js/快速服务器并发送响应对象。res.json()法典:$.ajax({    dataType: "text",    url: myURL,    method: "GET",    success: (data) => { resolve(data); },    error: (err) => { reject(err); },    timeout: 1000000}) 
查看完整描述

3 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

我前几次也遇到过同样的问题。

该问题是由 API 服务器的错误设置引起的。Content-Length

希望这有帮助。


查看完整回答
反对 回复 2022-09-16
?
撒科打诨

TA贡献1934条经验 获得超2个赞

我认为这基本上是因为必须尝试的数据编码不足,通过这个函数,某些字符的每个实例将被替换为一个,两个,三个或四个转义序列,表示字符的UTF-8编码(将只有四个转义序列由两个“代理”字符组成的字符)。encodeURIComponent()


大多数错误(例如截断的数据)都通过这种编码来解决,因为根据文档,该函数将仅处理大约50个字符的返回字符串,而忽略其余部分。$.ajax


您甚至可以通过减少返回数据中的字符数来对此进行测试。


为了缩短它,您可以尝试


$.ajax({

    dataType: "text",

    url: myURL,

    method: "GET",

    success: (data) => { resolve(encodeURIComponent(data)); },

    error: (err) => { reject(err); },

    timeout: 10000

}) 

以下是一些资源,您可以通过这些资源来关联您的问题


查看完整回答
反对 回复 2022-09-16
?
呼唤远方

TA贡献1856条经验 获得超11个赞

尝试在您的API服务器上设置,添加php函数set_time_limit($second);



查看完整回答
反对 回复 2022-09-16
  • 3 回答
  • 0 关注
  • 144 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信