#javascript #jquery #mysql #ajax #node.js
#javascript #jquery #mysql #ajax #node.js
Вопрос:
Я пытаюсь проверить, существуют ли данные в таблице mysql. Я получаю ошибку TypeError: res.send не является функцией.
В моей таблице mysql много данных, но 3 столбца со всеми переменными (45) и идентификатором (автоинкрементным), который —
**id | metrics | custom_metrics**
1 | test | test
мой js-файл внутри маршрутов —
router.post('/addcustom',function(req,res){
try {
/*if (req.body != null) {*/
var customMetric = req.body.customMetric;
//var metrics = req.body.metrics;
var comma = ',';
console.log("***CUSTOMMETRIC1: " JSON.stringify(customMetric) "comma: " comma);
// check if data exists in table start
connection.query('select custom_metrics from metrics_list where custom_metrics = ?',[customMetric], function(err, result, response) {
if (err) {
console.log('Count Error :' err);
} else {
console.log("METRICS WHERE FOUND: " JSON.stringify(result) "****req.body.customMetric== " customMetric);
var res = JSON.stringify(result);
if(result!=''||result!=null){
res.send('yes');
return false;
} else {
console.log("NOT FOUND");
}
}
}); //select custom metrics validation check query
//check if data exists in table end
/*connection.query('INSERT INTO metrics_list (customMetric,metrics) values ("' customMetric '"' comma '"' metrics '")', function(err, result) {*/
connection.query('SELECT COUNT(DISTINCT custom_metrics) FROM metrics_list;', function(err, result) {
if (err) {
console.log('Count Error :' err);
} else {
console.log('Metrics Successfully Counted:' JSON.stringify(result));
// console.log("CUSTOMMETRIC HTML req: " customMetric);
// connection query nesting 1start
var id1 = JSON.stringify(result).replace(/D/g,'');
console.log("ID1: " id1);
connection.query('UPDATE metrics_list SET custom_metrics = ? WHERE id = ?', [customMetric,id1], function(err, result1) {
if (err) {
console.log('Count Error :' err);
} else {
console.log(" Update Successfully " JSON.stringify(result1));
//res.redirect('/metrics/add');
}
});
}
});
/*}*/
} catch (ex) {
console.log("Exception : " ex);
}
})
Мой вызов ajax на странице html-
<script type="text/javascript">
$(document).ready(function() {
$('#addbtn').on('click',function(){
var customMetric = $('#cus_metrics').val();
var dataString = 'customMetric=' customMetric;
//alert(dataString);
var letterNumber = /^[0-9a-zA-Z] $/;
if(customMetric =='') {
alert("This field cannot be empty");
}// if null ends
else if(customMetric.length <= 3 || customMetric.length >= 20){
alert("This field must contain atleaset more than 3 and less than 20 characters");
return false;
}
else {
$.ajax({
method:'POST',
url:'/metrics/addcustom',
data:dataString,
success:function(response){
if (response == 'no') {
//alert("success");
/* $("#success-alert").css("display", "block");
top.location.href = "/dashboard";*/
alert("GOT A NO");
}
else{
alert("got a yes");
}
}
}); //$.ajax ends
}
});
</script>
Моя кнопка HTML указывает на файл js, я добавляю только кнопку html, поскольку мне нужна помощь только для части ajax, а сохранение и список работают отлично
<div class="form-group">
<label class="col-sm-2 control-label">Add New Custom Metrics</label>
<div class="col-lg-3">
<input type="text" id="cus_metrics" name="cus_metrics" class="form-control" placeholder="" />
</div>
<div class="col-lg-3">
<div style="text-align: left;width:100%;height:100%;">
<button type="button" id="addbtn" style="margin-left: 28%;width: 28%;" class="btn btn-primary">Add</button>
</div>
</div>
</div>
Согласно моему ajax-коду, я отправляю идентификатор параметров в файл JS, и, как следует из запроса, я пытаюсь использовать предложение where connection.query('select custom_metrics from metrics_list where custom_metrics = ?',[customMetric], function(err, result, response)
.
Я хочу отправить ответ в HTML-файл и получить ВСПЛЫВАЮЩЕЕ окно предупреждения, если файл существует, используя метод res.send, который, по-видимому, не работает. Прошу вас помочь мне с идеальным кодом, так как я застрял с этим уже целый день!!
ПОМОЩЬ приветствуется…
Комментарии:
1.
var res = JSON.stringify(result);
вот почему это не функция2. ооо, спасибо.. это сработало!! Это был быстрый ответ… ПРИВЕТСТВУЮ, приятель.. Я внес изменения в свой код, и теперь он работает отлично..
Ответ №1:
мой js-код на стороне сервера с небольшой модификацией, который работает на 100%, выглядит следующим образом —
router.post('/addcustom',function(req,res){
try {
/*if (req.body != null) {*/
var customMetric = req.body.customMetric;
//var metrics = req.body.metrics;
var comma = ',';
console.log("***CUSTOMMETRIC1: " JSON.stringify(customMetric) "comma: " comma);
// check if data exists in table start
connection.query('select custom_metrics from metrics_list where custom_metrics = ?',[customMetric], function(err, result, response) {
if (err) {
console.log('Count Error :' err);
} else {
console.log("METRICS WHERE FOUND: " JSON.stringify(result) "ONLY RESULT :" result "****req.body.customMetric== " customMetric);
//var res = JSON.stringify(result);
console.log("RESULTS LENGTH: " result.length);
if(result.length > 0){
console.log("*****FOUND****");
res.send('yes');
return false;
} else {
console.log("NOT FOUND");
// ********************************************
connection.query('SELECT COUNT(DISTINCT custom_metrics) FROM metrics_list;', function(err, result) {
if (err) {
console.log('Count Error :' err);
} else {
console.log('Metrics Successfully Counted:' JSON.stringify(result));
// console.log("CUSTOMMETRIC HTML req: " customMetric);
// connection query nesting 1start
var id1 = JSON.stringify(result).replace(/D/g,'');
console.log("ID1: " id1);
connection.query('UPDATE metrics_list SET custom_metrics = ? WHERE id = ?', [customMetric,id1], function(err, result1) {
if (err) {
console.log('Count Error :' err);
} else {
console.log(" Update Successfully " JSON.stringify(result1));
//res.redirect('/metrics/add');
}
});
}
}); // select distinct close
//********************************************
}// else result null
} // conn query check to validate
}); //select custom metrics validation check query
//check if data exists in table end
/*connection.query('INSERT INTO metrics_list (customMetric,metrics) values ("' customMetric '"' comma '"' metrics '")', function(err, result) {*/
/*}*/
} catch (ex) {
console.log("Exception : " ex);
}
})
И мой Ajax —
script type="text/javascript">
$(document).ready(function() {
$('#addbtn').on('click',function(){
var customMetric = $('#cus_metrics').val();
var dataString = 'customMetric=' customMetric;
//alert(dataString);
var letterNumber = /^[0-9a-zA-Z] $/;
if(customMetric =='') {
alert("This field cannot be empty");
}// if null ends
else if(customMetric.length <= 3 || customMetric.length >= 20){
alert("This field must contain atleaset more than 3 and less than 20 characters");
return false;
}
else {
$.ajax({
method:'POST',
url:'/metrics/addcustom',
data:dataString,
success:function(response){
if (response == 'yes') {
//alert("success");
/* $("#success-alert").css("display", "block");
top.location.href = "/dashboard";*/
alert("GOT A yes");
return false;
} else {
return true;
}
}
}); //$.ajax ends
}
});
</script>