gpt4 book ai didi

javascript - 摆脱不相关的控制台错误(404(未找到))

转载 作者:行者123 更新时间:2023-12-03 06:47:05 28 4
gpt4 key购买 nike

我有一个简单的程序,可以抓取网站上的某些项目。我使用 Angular $http 服务调用下面的 C# 方法以从页面获取标记,然后使用 JS 处理其他所有内容。一切都工作得很好,除了一个小烦恼:一堆 404 错误。

http get 调用完成后,404 错误将显示在开发人员工具中。这几乎就像 JavaScript 试图解释 HTML,然后在浏览器中对图像的所有获取请求失败一样:

enter image description here

我想要弄清楚的是如何让 404 错误消失或静默失败(不在控制台中显示)。我在研究中没有找到任何东西,但我假设有某种方法可以处理这个问题,无论是在服务器端还是客户端

C#

public static string GetPageSource()
{
JObject result = new JObject();

try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://awebpage.html");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
result["data"] = reader.ReadToEnd();
result["success"] = true;
reader.Close();
response.Close();
}
catch (Exception ex)
{
result["data"] = ex.Message;
result["success"] = false;
}

return JsonConvert.SerializeObject(result);
}

JS

$scope.getPageSource = function () {
var ajaxProcessor = Utils.ajaxMessage('Scraping Beer Menu From Source');
ajaxProcessor.start();
$http({
method: 'POST',
url: 'AJAX/MenuHandler.aspx/GetPageSource',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: {}
}).then(function (response) {
ajaxProcessor.stop();
var result = $.parseJSON(response.data.d);

if (result.success === false) {
Utils.showMessage('error', result.data);
} else {
var beerMenu = new BeerMenu(result.data, $scope.loggedInUser, function (beerMenu) {
$scope.buildDisplayMenu(beerMenu);
});

}

}, function (err) {
ajaxProcessor.stop();
console.log(err);
Utils.showMessage('error', err.data.Message);
});
};

更新

感谢@dandavis,我的问题缩小到在 buildDisplayMenu 函数(调用 buildCurrentMenu)中调用 $.parseHTML。有没有办法让它忽略图像或任何获取请求?

buildCurrentMenu: function () {
var html = $.parseHTML(this.pageSource);
var menuDiv = $(html).find('.TabbedPanelsContent')[0];
var categories = $(menuDiv).find('h2');
var categegoryItems = [];
var beerArray = [];

for (var i = 0; i < categories.length; i++) {
...
}
return beerArray;
}

最佳答案

解决方案是在调用 $.parseHTML 之前从页面源中删除任何 img 标签(或任何其他应忽略的标签)。

this.pageSource = this.pageSource.replace(/<img[^>]*>/g, "");

关于javascript - 摆脱不相关的控制台错误(404(未找到)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37692334/

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