我有一个 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/