jquery - Nodejs Controller 调用 Jquery getJSON 时 Ajax 表单获取错误

标签 jquery ajax node.js controller sails.js

我有一个 Node.js/Sails.js 应用程序,其中包含通过 Jquery ajax 提交到 Controller 的客户端表单:

$(function () {
    $("form").submit(function (e) {
        e.preventDefault();
        var form = $(this);

        $.ajax({
            url: form.attr("action"),
            type: "POST",
            dataType: 'json',
            data: form.serialize(),

            success: function(json){
                alert( "Data Returned: " + JSON.stringify(json));
            },
            error: function(xhr, status, error) {
                alert( "error" );
            }

        });

    });
});

我的 Controller ArticleController.js 尝试从 Flickr API 获取信息:

**
* ArticleController.js
*
* @docs        :: http://sailsjs.org/#!documentation/models
*/

module.exports = {
    search: function (req, res) {

        var searchImg = req.param("search");

        var flickerAPI = "http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?";
        $.getJSON( flickerAPI, {
            tags: "mount rainier",
            tagmode: "any",
            format: "json"
        })
        .done(function( data ) {
            return res.send(data);
        });
    }
};

但是我收到了这个错误:

POST http://localhost:1337/Article/search 500 (Internal Server Error) jquery-1.10.2.js:8706
send jquery-1.10.2.js:8706
jQuery.extend.ajax jquery-1.10.2.js:8136
(anonymous function) main.js:7
jQuery.event.dispatch jquery-1.10.2.js:5095
elemData.handle

当然,我在没有 getJSON 调用的情况下测试了我的 Controller ,它工作正常,返回简单的字符串或 JSON 值。

最佳答案

你不能在nodejs中使用jQuery:它是一个浏览器(客户端)库!

对 jQuery 调用最简单的替代是使用 super 简单且 super 强大的 request 模块: https://github.com/mikeal/request

但是,如果您真的想在nodejs中使用jQuery,还有一些解决方案。 这些确实不是进行简单 API 调用的推荐解决方案。 但它们可以用来做一些抓取:使用 jQuery 的所有功能解析 HTML 页面。

如果有这种情况,您可以尝试一下我的 buck模块,并给我一些反馈..

var $ = require('buck');

关于jquery - Nodejs Controller 调用 Jquery getJSON 时 Ajax 表单获取错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25612792/

相关文章:

jquery - js/css : disable scrollbar but keep scroll position

android - Titanium 设备后退按钮无法正确关闭我的应用程序

node.js - 使用 nvm-windows 时更新 npm

javascript - 如何减少在用户向下滚动页面时加载下一组图像之前出现的空白量?

javascript - 如何将第二个元素设置为最右边?

javascript - 如何在 $.getJSON() 中传递 `Cache: false`

javascript - 查找未处理的 promise 拒绝 : TypeError: Chaining cycle detected for promise 的来源

javascript - Fast-csv 将所有内容写在一行中。需要多行输出

jquery - 使用变量作为 jQuery 类选择器

jquery - 如何修复浏览器缓存和未修改的 JSON 响应? jQuery.ajax({ifModified :true, cache:true}) JSON 请求在数据响应时中断