gpt4 book ai didi

javascript - 使用 ajax 解析 CSV 并在某些列上执行异步任务

转载 作者:行者123 更新时间:2023-12-03 10:02:23 25 4
gpt4 key购买 nike

我有一个 CSV,其中包含以下格式的展示位置链接和目标链接例如CSV 示例

[placement url],[target url]
[placement url],[target url]
[placement url],[target url]

我需要使用 javascript 逐行读取 CSV 并获取放置网址的 [页面标题],然后发布到我已有的 PHP 脚本[页面标题]及其尊重[目标 URL]

这就是我的 javascript

for (i = 1; i < csvLines.length; i++) {
csvValues = csvLines[i].split(";");

pagetitle = csvValues[0];
target = csvValues[1];
/*start ajax*/
$.ajax({

url: pagetitle,
dataType: 'html',
statusCode: {
200: function(response) {

var matches = response.match(/<title>(.*?)<\/title>/);
placementTitles.push($(matches[0]).text());
targetURLS.push(?);



},
404: function() {
/*404 here*/

}
},
error: function(error) {

}
});


/*end ajax*/

}

我的问题

我应该将哪个值插入 targetURLS.push(?); 上的 targetURLS 数组中,以便 placementTitles[x] 始终在 placementTitles[x] 中具有其各自的目标 URL >targetURLS[x]...考虑到这些操作是异步的,但仍然需要通过始终使用相同的数组索引关联两列来维护 CSV 的完整性。

最佳答案

好吧,我找到了更好的解决方案..首先,我们将所有相关数据存储在一个数组 [{url, target, response}, {url, target, response}] 中,因此数组索引对于所有数据都是相同的。

其次,我们编写(或覆盖,如果您愿意的话)我们自己的 ajax.get 函数,在其中我们可以向回调函数添加一个附加参数(数组索引)。

<html>
<head>
<script src = 'jquery-1.9.1.min.js'></script>
<script>
//We write our own $.get to pass a parameter to it
AJAX = {
getXmlDoc: function(){return ((window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"))},

//u:= url, f:= callback, c:=caller (here array index)
Get: function(u, f, c){
var tDoc = this.getXmlDoc();

tDoc.open('GET', u, true);
tDoc.onreadystatechange = function(){
//If you want to check others, change accordingly.
if (tDoc.readyState === XMLHttpRequest.DONE && tDoc.status === 200) f(tDoc, c);
};

tDoc.send();
}
};
</script>

<script type = 'text/javascript'>
var mCSV = ['url;key', 'url;key'];
var mResults = []; //This will hold our results.

function test(){
var mResults = [];
for(var i=0, j=mCSV.length;i<j;i++){
var tS = mCSV[i].split(';');
mResults.push({url: tS[0], target: tS[1]});

AJAX.Get(tS[0], function(r, i){
mResults[i].handled = true;

if (r.status === 200){
mResults[i].response = $(r.responseText.match(/<title>(.*?)<\/title>/)[0]).text();
console.log(mResults[i]);
};
}, i);
};
}
</script>
</head>

<body onload = 'test()'>

</body>
</html>

关于javascript - 使用 ajax 解析 CSV 并在某些列上执行异步任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30523809/

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