我已经尝试了几个小时才能在验证后从我的函数中获取值,但它似乎无法正常工作。我试过看类似的线程,但仍然无法理解他们的答案。这是我的代码。
/*$("#submit").click(function(){
// Set form variable
var form = $('#loginform');
form.submit(function(event){
var userid = $('#userID').trim(userid);
var password = $('#Password').trim(password);
// Process AJAX request
var validate = $.post('http://localhost:3000/api/login',
$("loginform").serialize(), function(data){
alert(data);
});
// Prevent default form action
event.preventDefault();
});
}); */
function ajaxcall(url, data, callback) {
$.ajax({
"url": "http://localhost:3000/api/login", // server url
"type": 'POST', //POST or GET
"data": "#loginform", // data to send in ajax format or querystring format
"datatype": 'json',
"beforeSend": function() {
alert('sending data');
// do some loading options
},
success: function(data) {
if(data=="Login Success"){
callback(true); // return data in callback
} else {
callback(false);
}},
complete: function() {
alert('ajax call complete');
// success alerts
},
error: function(xhr, status, error) {
alert(xhr.responseText); // error occur
}
});
}
评论的第一部分基本上是我尝试过但也失败了所以我决定使用$.ajax
而不是看起来没有变化。这是我的HTML代码。
<form method="POST" action="index.html" id="loginform" onsubmit="return ajaxcall(callback)" >
我正在寻找一些代码供我参考或作为参考或简单的解释等。我之前已经看过并试过但它不起作用所以我猜它与我的代码本身有关而不是HTML。请原谅我提出同样的问题,但在阅读了这个帖子几个小时后,我几乎陷入了困境。
How do I return the response from an asynchronous call?
服务器代码:
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost:27017/myproject';
var authenticate = function(db, req, callback){
var cursor = db.collection('LoginID').find({"_id" : req.body.userID,
"Password" : req.body.Password
}).count(function(err,doc){
if(err) return callback(err);
if(doc == 0){
console.log('Invalid Login ID or Password');
return callback(null, doc);
} else {
console.log('Login Success');
return callback(null, doc);
}
});
}
module.exports = {
postCollection : function(req,res){
var username = req.body.userID;
var Password = req.body.Password;
//var createdDate = "<b>" + day + "/" + month + "/" + year + "</b>"
MongoClient.connect(url, function(err, db) {
//assert.equal(null, err);
if(err) {
res.send(err);
res.end();
}
authenticate(db, req, function(err,doc) {
if(err)
res.send(err);
else{
if(!doc){
res.send( 'Invalid Login ID or Password' );
res.end();
} else {
res.send("Login success")
res.end();
}
}
db.close();
});
});
}
}
PS:这是为了调用我的api,然后检查数据库以查找用户的条目,如果不存在则输出响应&#34;无效的登录ID或密码&#34;并保持在同一页面上,但如果有用户的条目,则会输出&#34;登录成功&#34;然后将其重定向到index.html
。对不起,如果我不清楚。
答案 0 :(得分:0)
我在表单提交方面遇到了类似的问题。然后找到了这个,http://malsup.com/jquery/form/#getting-started。
看看这个插件。
注意:尝试从服务器返回codes
而不是字符串,或者将它们解析为JSON。这通常是最好的做法。
答案 1 :(得分:0)
您必须将键值对传递给data
属性
“对象必须是键/值对。” http://api.jquery.com/jquery.ajax/
因此您必须将数据更改为以下内容:
data: {loginform_id: "#loginform"},
您还必须从ajax属性中删除"
无处不在。
e.g。改变这个:
"url": "http://localhost:3000/api/login", // server url
"type": 'POST', //POST or GET
"data": "#loginform", // data to send in ajax format or querystring format
"datatype": 'json',
"beforeSend": function() {
alert('sending data');
// do some loading options
},
到此:
url: "http://localhost:3000/api/login", // server url
type: 'POST', //POST or GET
data: {loginform_id: "#loginform"}, // data to send in ajax format or querystring format
datatype: 'json',
beforeSend: function() {
alert('sending data');
// do some loading options
},