jquery - 无法在 openshift 上的 Nodejs 和 mongodb 中进行 POST

标签 jquery node.js mongodb openshift

这是我的 ajax post 请求。我正在使用 nodejs 和 mongodb。当我发布请求时,我收到一条错误,指出 CANNOT POST。POST 请求中的currlocation 是 json 对象。我还尝试从 POST 请求中删除内容类型,并尝试将数据作为 JSON.stringify(currlocation) 发送,但它仍然不起作用

     $.ajax({
        type: "POST",
        url: "http://myurl.rhcloud.com",
        contentType: "application/json",
        data: currLocation,
        dataType: "text",
        success: function( response ){
            console.log(response);                  

        },
        error: function( error ){
            console.log( "ERROR:", error );
        }
        });    

我正在使用nodejs和mongodb。我在 server.js 文件中的配置是

self.app.configure(function () {
            self.app.use(express.bodyParser());
            self.app.use(express.favicon());
            self.app.use(express.json());
            self.app.use(express.urlencoded());
            self.app.use(express.methodOverride());
            self.app.use(express.errorHandler({ dumpExceptions: true, showStack: true      }));


      });

我在 server.js 文件中的发布请求是

self.app.post('/', self.routes['post'] );
  self.routes['post'] = function(req, res){
        console.log("inside post");
               var mongojs = require('mongojs');
                var dbName = "/favloc";
                var connection_string = process.env.OPENSHIFT_MONGODB_DB_USERNAME + ":" +  process.env.OPENSHIFT_MONGODB_DB_PASSWORD + "@" + process.env.OPENSHIFT_MONGODB_DB_HOST + dbName;
                console.log("conncetion string"+connection_string);
                var db = mongojs(connection_string, ['location']);
                res.setHeader('Access-Control-Allow-Origin','*');
                res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
                 res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');                
                 res.setHeader('Access-Control-Allow-Credentials', true);



               db.collection('location').insert({'city' : "sf",'id':'2'}, function(result){
                console.log("success");
                  res.send(req.body.self);
               //  res.end('success');
            });
       };

最佳答案

$.ajax() 不会发出真正的 POST 请求。

我认为它实际上发送了一个 GET 请求,并将 Access-Control-Request-Method header 设置为 POST

您可以通过调整服务器端代码来匹配此行为,以添加对此行为的支持。

关于jquery - 无法在 openshift 上的 Nodejs 和 mongodb 中进行 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23205500/

相关文章:

node.js - Express 函数中的 "res"和 "req"参数是什么?

node.js - 在嵌套数组中查找对象 mongodb nodejs

javascript - 如何使用 jQuery 数据表使用 onChange 事件获取选定的数据?

javascript - 有人可以在幕后解释为什么这个 Jquery Hover 图像命令不起作用吗?

javascript - Node : Cannot read property 'length' of undefined

node.js - NodeJS HTTP 发布 - GZip

php - 去除黑边 4 :3 on youtube thumbnails

javascript - 仅当尚未运行 jQuery UI 时才运行动画

node.js - NodeJS 类导入

javascript - 将 json 数组转换为 Node.js Express.js 中的 var 值