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

我正在尝试通过 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

}) 

http://img3.mukewang.com/6324742500013bd710920550.jpg

largeQ
浏览 256回答 3
3回答

拉丁的传说

我前几次也遇到过同样的问题。该问题是由 API 服务器的错误设置引起的。Content-Length希望这有帮助。

撒科打诨

我认为这基本上是因为必须尝试的数据编码不足,通过这个函数,某些字符的每个实例将被替换为一个,两个,三个或四个转义序列,表示字符的UTF-8编码(将只有四个转义序列由两个“代理”字符组成的字符)。encodeURIComponent()大多数错误(例如截断的数据)都通过这种编码来解决,因为根据文档,该函数将仅处理大约50个字符的返回字符串,而忽略其余部分。$.ajax您甚至可以通过减少返回数据中的字符数来对此进行测试。为了缩短它,您可以尝试$.ajax({    dataType: "text",    url: myURL,    method: "GET",    success: (data) => { resolve(encodeURIComponent(data)); },    error: (err) => { reject(err); },    timeout: 10000}) 以下是一些资源,您可以通过这些资源来关联您的问题

呼唤远方

尝试在您的API服务器上设置,添加php函数set_time_limit($second);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript