【问题标题】:Ajax query response with success but it fires errorAjax 查询响应成功但触发错误
【发布时间】:2023-04-03 04:59:01
【问题描述】:

我是 mongodb 的新手,我正在使用 ExpressBody-ParserMongoose,并且我有一个 mongodb 数据库(在线,它调用 mlab)我从中提取数据。一切正常,我使用邮递员获取、发布和删除。我正在尝试在 JavaScript 中获取数据,以便可以在 html 中显示。我正在使用 Ajax,它可以工作并返回成功,但会触发 Ajax 的失败功能。

mongdb 控制器

exports.photoalbum_all = function (req, res, next) {
PhotoAlbum.find(({}), function (err, photoalbum) {
    if (err) return next(err);
    res.send("../Views/images", {photo: photoalbum});
});};

我正在进行的 Ajax 调用

                    function getPhoto() {
                        var photoAdd = 'http://localhost:1234/photoalbums/find'; 
                        $.ajax({
                            header: 'Access-Control-Allow-Origin: *',
                            dataType: "jsonp",
                            url: photoAdd,
                            contentType: 'application/json; charset=utf-8',
                            async: false,
                            crossDomain: true,
                            success: AjaxSucceeded,//callback,
                            error: AjaxFailed
                        });
                    }
                    function AjaxSucceeded(result) {
                        alert("hello");
                        alert(result);
                    }
                    function AjaxFailed(result) {
                        debugger;
                        alert("hello1");
                        alert(result.statusText);
                    }
                    getPhoto();

起初我收到关于 ajax 跨域请求被阻止的错误,所以我不得不使用数据类型:'jsonp'。 就像我说的,当我检查 chrome 浏览器控制台的网络时,我得到了成功和这个地址:

http://localhost:1234/photoalbums/find?callback=jQuery111202567313069615542_1545928466705&_=1545928466706

返回这个 Json 值

[{"_id":"5c22a5ffcb29611f905f756b","title":"prayer","albums":[{"_id":"5c22a5ffcb29611f905f756c","u_name":"family01","u_title":"family_man"}],"createdAt":"2018-12-25T21:49:51.091Z","updatedAt":"2018-12-25T21:49:51.091Z","__v":0},{"_id":"5c22a66bd3527c39342fafe7","title":"prayer","albums":[{"_id":"5c22a66bd3527c39342fafe8","u_name":"family01","u_title":"family_man"}],"createdAt":"2018-12-25T21:51:39.274Z","updatedAt":"2018-12-25T21:51:39.274Z","__v":0}]

我已经筋疲力尽地研究但无济于事,但我很怀疑,我从 mlab 得到的 Json 响应是否是问题,我的意思是格式。我对任何想法持开放态度。提前感谢您的帮助。

【问题讨论】:

  • 只有在您的端点实际提供 JSONP 时,您才能使用 JSONP。你需要学习如何使用 CORS。
  • 我没看懂,是不是因为我用的是在线mlab

标签: javascript ajax mongodb express body-parser


【解决方案1】:

在客户端没有什么比 JSONP 更重要的了。如果要对服务器使用正确的 Ajax JSON 调用,则需要在 localhost 上启用 CORS。

这里有一些关于如何做到这一点的教程Deadly CORS when http://localhost is the origin

你也可以google一下:在localhost上启用CORS

希望对你有帮助

【讨论】:

  • 我看了它,非常有用的文档,但由于某种原因我仍然找不到解决方法。 Cors chrome 工具似乎不起作用。仍然出现错误
  • 非常感谢,它成功了,我不得不做一个空缓存和硬重新加载,并使用 javascript XMLHttpRequest。请教,用ajax从mongodb拉数据可以吗
  • 现在它适用于 Ajax,我讨厌你 chrome 但我仍然爱你。
猜你喜欢
  • 1970-01-01
  • 2011-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多