gpt4 book ai didi

javascript - 使用 Promise 迭代数组不断被拒绝

转载 作者:行者123 更新时间:2023-12-01 02:06:24 27 4
gpt4 key购买 nike

我正在尝试迭代数组以使用 $.get 接收数据,但我不断收到拒绝,首先我获取应接收数据的路径:

 function getFiles() {
return $.get(URL + "/getdata.php");
}

var testing= await getFiles();

testing=$.parseJSON(testing);

返回:

["12487.html", "46962.html"]

这工作正常,但现在我尝试像这样迭代:

var surveyData=[];
for(var i=0;i<testing.length;i++){
console.log('in loop '+i)
surveyData.push(getHtml(testing[i]));

}

$.when(surveyData).done((...data)=>{
console.log(data);

}).fail((e)=>{console.log('failed:'+e)})

async function getHtml(fileName){

return await $.get((URL + '/surveys/' + fileName, { "_": $.now() },'html'));

}

我已经尝试解决这个问题好几天了,当然我在网上搜索但找不到解决方案,我不断得到:

GET http://192.168.10.11:3000/html 404 (Not Found)

Uncaught (in promise) {readyState: 4, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}

我想要的只是一个填充来自以下数据的数组:

$.get((URL + '/surveys/' + fileName, { "_": $.now() },'html'));

但是索引必须与测试索引相同,所以当测试第一项时例如,123.html 数据数组的第一项必须填充 123.html 的数据,而不是填充 345.html 的数据。感谢任何帮助

编辑 promise 的响应是

"Cannot GET /html↵"

我已经让它在没有 promise 的情况下工作,但导致错误的索引数据

 $.ajax({

url: URL + "/getdata.php",
cache: false,
success: function (data) {
serverfiles = $.parseJSON(data);
if (serverfiles.length) {
$.each(serverfiles, function (i, val) {
$.get(URL + '/surveys/' + val, { "_": $.now() }, function (html) {

//do something with html

}, 'html');
});
}

},
error: function (e) {

console.log(e);
},
fail: function (e) {
console.log('fail');
console.log(e);
}
});

我正在使用适用于 Android 和 IOS 的 Jquery 1.12.4 和 cordova

更新

使用 HMR 的代码我得到:

failed items:
failed: 12487.html error:
Object { readyState: 4, getResponseHeader: getResponseHeader(), getAllResponseHeaders: getAllResponseHeaders(), setRequestHeader: setRequestHeader(), overrideMimeType: overrideMimeType(), statusCode: statusCode(), abort: abort(), state: state(), always: always(), then: then(), … }
failed: 46962.html error:
Object { readyState: 4, getResponseHeader: getResponseHeader(), getAllResponseHeaders: getAllResponseHeaders(), setRequestHeader: setRequestHeader(), overrideMimeType: overrideMimeType(), statusCode: statusCode(), abort: abort(), state: state(), always: always(), then: then(), … }
successes:
Array []

具有以下内容:

abort: function abort()

always: function always()

complete: function add()

done: function add()

error: function add()

fail: function add()

getAllResponseHeaders: function getAllResponseHeaders()

getResponseHeader: function getResponseHeader()

overrideMimeType: function overrideMimeType()

pipe: function then()

progress: function add()

promise: function promise()

readyState: 4

responseText: "Cannot GET /html\n"

setRequestHeader: function setRequestHeader()

state: function state()

status: 404

statusCode: function statusCode()

statusText: "Not Found"

success: function add()

then: function then()

__proto__: Object { … }

html 数据示例:

  <!DOCTYPE html><html><meta charset="UTF-8"><meta name="viewport"
content="user-scalable=no, initial-scale=1, maximum-scale=1,
minimum-scale=1, width=device-width"><head><title>Umfrage</title><link
rel="stylesheet" href="http://mysite.de/s/css/Theme.css" /><link
rel="stylesheet"
href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css"
/><script
src="http://code.jquery.com/jquery-1.11.1.min.js"></script><script
src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script><script
src="http://mysite.de/s/main.js"></script><noscript>JavaScript ist
nicht aktiviert, bitte Aktivieren!</noscript></head><body><div
data-role="page" id="survey" data-theme="a"><div data-role="header"
data-position="fixed"><h2 id="title" style="text-align:center;">my
title</h2></div><form action="" method="post" id="form"><hr
id="hrid"><input type="submit" value="Abschicken" id="submit"><input
type="hidden" value="my title" name="titlename"
/></form></div></body></html>

最佳答案

您的问题与 promise 无关。问题在于您传递给 $.get 的参数:由于您(无意识地?)使用了逗号运算符,它总是计算为一个值为“html”的参数:

(URL + '/surveys/' + fileName, { "_": $.now() },'html')

逗号运算符返回元组中最后一个元素的值。您可能不打算使用该运算符,而只是想向 $.get 传递 3 个参数,而不是 1 个。因此,删除一对括号,以便逗号不再充当运算符,而是充当函数参数分隔符:

URL + '/surveys/' + fileName, { "_": $.now() },'html'

关于javascript - 使用 Promise 迭代数组不断被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50078464/

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