2016-09-14 7 views
0

私のNodeアプリケーションでは、取得要求と送信要求を使用しています。 getを使うだけでページがレンダリングされ、ポストインサートデータがMySQLデータベースに使用されます。データは正しく挿入されますが、ポストが呼び出された後、アラートは非常に迅速に消えます。AJAX post success.alertの後にアラートを表示するには?

これはapp.jsからの私のコードです:

app.get('/Associate', routes.Associate); 
app.get('/addAssociate',routes.addAssociate); 
app.post('/addAssociate',routes.postAssociate); 

これはroutes.jsから私のコードです:

Associate: function(req, res) { 
     sess = req.session; 
     var name = req.session.user; 
     var username = 'SELECT first_name from user_info where email_id=?'; 
     if (sess.user) { 
      console.log('\n--------------------- Associate ----------------------'); 

      var db = req.app.get('db')(); 

      var id = req.query['id']; 

      // var newsquery='SELECT * from associate_info'; 
      var assoquery = 'SELECT associate_id,doctor_id,CONCAT(initial," ",first_name," ",middle_name," ",last_name) As Name,qualification,address_line1,city,state,pincode,email_id,contact_no from associate_info '; 
      var redirect = 'Associate_Listing'; 

      async.parallel({ 
        one: function(callback) { 
         db.query(assoquery, function(error, rows, fields, next) { 
          console.log("length-\t", rows.length); 
          callback(error, rows); 
         }); 
        }, 
        two: function(callback) { 
         db.query(username, [name], function(error, rows, fields, next) { 
          // console.log(rows.length); 
          console.log(rows); 
          callback(error, rows); 
         }); 
        } 
       }, 

       function(error, results) { 

        var totalNews = results.one.length; 
        for (var i = 0; i < results.one.length; i++) { 
         if (!(results.one[i].views > 0) || results.one[i].views == null) 
          results.one[i].views = 0; 

         results.one[i].ids = i + 1; 
         //      if(!(results.one[i].views>0)) 
         //       results.one[i].views=0; 
        } 
        //  console.log("--------",results.one[0].id); 
        res.render(redirect, { 
         error: JSON.stringify(1), 
         from_period: 0, 
         to_period: 0, 
         state: JSON.stringify("All States"), 
         user2: "Dr" + " " + JSON.parse(JSON.stringify(results.two[0]["first_name"])), 
         user: JSON.parse(JSON.stringify(req.session.user)), 
         Associate: results.one, 
         str_journal: JSON.stringify(results.one), 
         user_type_id: req.session.user_type_id, 
         totalJournals: JSON.stringify(totalNews) 
        }); 

       }); 
     } else { 
      res.redirect('/login'); 
     } 
    }, 


    // addJournal:function(req,res){ 
    addAssociate: function(req, res) { 
     console.log('\n-------------------- addAssociate ----------------------\n'); 
     var name = req.session.user; 
     var db = req.app.get('db')(); 
     var username = 'SELECT first_name from user_info where email_id=?'; 
     if (req.session.user) { 
      async.parallel({ 
        one: function(callback) { 
         db.query(username, [name], function(error, rows, fields, next) { 
          console.log("length-\t", rows.length); 
          callback(error, rows); 
         }); 
        } 
       }, 
       function(error, results) { 
        res.render('addAssociate', { 
         user: JSON.parse(JSON.stringify(req.session.user)), 
         // cases : results.one, 
         user2: "Dr" + " " + JSON.parse(JSON.stringify(results.one[0]["first_name"])), 
         user_type_id: req.session.user_type_id, 
         //     totalNews :JSON.stringify(totalNews)     
        }) 
       }); 

     } else { 
      res.redirect('/login'); 
      // res.redirect('addAssociate'); 
     } 
    }, 


    postAssociate: function(req, res) { 
     console.log('\n-------------------- postAssociate ----------------------\n'); 

     var db = req.app.get('db')(); 
     // res.send('Username: ' + req.body.doctorName); 
     // var title = req.body.title; 
     // var created =req.body.created; 
     // initial : req.body.doctorName, 
     // var id=1; 

     // var dateArray=created.split('/'); 

     // var finalDate=""+dateArray[2]+"/"+dateArray[1]+"/"+dateArray[0]; 
     // var date1=new Date(finalDate); 
     var initial; 
     var first_name; 
     var middle_name; 
     var last_name; 
     var qualification; 
     var address_line1; 
     var address_line2; 
     var city; 
     var state; 
     var pincode; 
     var email_id; 
     var contact_no; 
     var Uname = req.session.user; 

     var post = { 


      initial: req.body.initial, 
      first_name: req.body.first_name, 
      middle_name: req.body.middle_name, 
      last_name: req.body.last_name, 
      qualification: req.body.qualification, 
      address_line1: req.body.address_line1, 
      address_line2: req.body.address_line2, 
      city: req.body.city, 
      state: req.body.state, 
      pincode: req.body.pincode, 
      email_id: req.body.email_id, 
      contact_no: req.body.contact_no, 
      status: 1, 


     }; 
     console.log('--------------------' + initial) 

     console.log(initial); 
     console.log(post); 


     db.query('SELECT * from user_info where email_id= ? ', [Uname], function(error, rows, fields) { 
      if (error) { 
       console.log(error); 

      } else { 
       console.log('name------------' + Uname); 
       console.log('rows---------' + rows.length); 

       for (var i in rows) { 
        console.log('----------hhh---' + rows[i].doctor_id); 
       } 
       db.query('INSERT INTO associate_info SET doctor_id=' + rows[i].doctor_id + ', creation_date=CURRENT_TIMESTAMP(), ? ', post, function(error, result) { 
        console.log('inside if'); 
        if (error) { 
         console.log(error); 
         res.status(200).send({ 
          success: 3, 
          error: error 
         }); 
         return; 
        } 

        console.log('Associate added successfully.'); 

       }); 


      } 

     }); 

    }, 

これはjqueryのAjaxコード

$(document).ready(function() { 
     $("#save").click(function() { 

      var initial = $("#doctorName").val(); 
      var first_name = $("#firstName").val(); 
      var middle_name = $("#middleName").val(); 
      var last_name = $("#lastName").val(); 
      var qualification = $("#qualification").val(); 
      var address_line1 = $("#address1").val(); 
      var address_line2 = $("#address2").val(); 
      var city = $("#city").val(); 
      var state = $("#state").val(); 
      var pincode = $("#pincode").val(); 
      var email_id = $("#email").val(); 
      var contact_no = $("#mobile").val(); 

      var dr = /^[a-zA-Z]+\.$/; 
      var alphaExp = /^[a-zA-Z]+$/; 
      var zipexp = /^[0-9]{1,6}$/; 
      var mobileexp = /^(\+91-|\+91|0)?\d{10}$/; 
      var emailexp = /^[A-Z0-9_'%=+!`#~$*?^{}&|-]+([\.][A-Z0-9_'%=+!`#~$*?^{}&|-]+)*@[A-Z0-9-]+(\.[A-Z0-9-]+)+$/i; 


      // Returns successful data submission message when the entered information is stored in database. 
      var dataString = 'initial=' + initial + '&first_name=' + first_name + '&middle_name=' + middle_name + '&last_name=' + last_name + '&qualification=' + qualification + '&address_line1=' + address_line1 + '&address_line2=' + address_line2 + '&city=' + city + '&state=' + state + '&pincode=' + pincode + '&email_id=' + email_id + '&contact_no=' + contact_no; 
      if (initial == '' || first_name == '' || middle_name == '' || last_name == '' || qualification == '' || address_line1 == '' || address_line2 == '' || city == '' || state == '' || pincode == '' || email_id == '' || contact_no == '') { 
       alert("Please Fill All Mandatory Fields"); 
       return false; 
      } else if (!initial.match(alphaExp) && !initial.match(dr)) { 
       alert("please insert valid initial"); 
       $("#doctorName").val(''); 
       document.getElementById('doctorName').focus(); 
       return false; 
      } else if (!first_name.match(alphaExp)) { 
       alert("please insert valid first name"); 
       $("#firstName").val(''); 
       document.getElementById('firstName').focus(); 
       return false; 
      } else if (!middle_name.match(alphaExp)) { 
       alert("please insert valid middle name"); 
       $("#middleName").val(''); 
       document.getElementById('middleName').focus(); 
       return false; 
      } else if (!last_name.match(alphaExp)) { 
       alert("please insert valid last name"); 
       $("#lastName").val(''); 
       document.getElementById('lastName').focus(); 
       return false; 
      } else if (!pincode.match(zipexp) || pincode.length != 6) { 
       alert("please insert valid pincode"); 
       $("#pincode").val(''); 
       document.getElementById('pincode').focus(); 
       return false; 
      } else if (!email_id.match(emailexp)) { 
       alert("please insert email id"); 
       $("#email").val(''); 
       document.getElementById('email').focus(); 
       return false; 
      } else if (!contact_no.match(mobileexp)) { 
       alert("please insert valid contact no"); 
       $("#mobile").val(''); 
       document.getElementById('mobile').focus(); 
       return false; 
      } else { 
       // AJAX Code To Submit Form. 
       $.ajax({ 
        type: "post", 
        url: "/addAssociate", 
        // contentType: 'application/json', 
        data: dataString, 
        cache: false, 

        success: function(data) { 
         console.log("data-----------" + data); 
         alert("hi"); 

        } 

       }); 
      } 
      // return; 
      // return false; 

     }); 
    }); 

である私は、警告を表示したいですデータがデータベースに正常に挿入された後。

+0

であるかどうかを判断するためにXMLHttpRequestステータスコードを使用することができ、古いJavaScriptの計画を使用している場合は、あなたのHTMLコード – Abhijeet

+0

を追加してくださいこんにちは、挿入した後、あなたは解像度を使用する必要があります.send(data)not res.render()..それ以降のajaxコードではページのレンダリングが行われるok –

答えて

0

ちょっと遅れて試してみてください。

のjQuery:ここ

   $.ajax({ 
        url:'path-to-process', 
        type:'POST', 
        data:{}, 
        success:function(){ 
          // Content to Display on Success. 
         setTimeout(function() { 
          // Content to Display on Success with delay. 
         }, 800); 
        } 
        }); 

、 "のsetTimeout()は、" あなたのコンテンツを表示するためのいくつかの指定された時間遅延を提供します。

いいね!

+0

まだ動作しません...アラートが表示されない – Sunita

+0

「ajax.success()」がトリガーされているかどうかを確認してください。トリガされた場合、AjaxコールはOKです。その後、コンソールのログを確認し、遅延が働いているかどうかを確認するために時間遅延を変更してください! –

+0

投稿後すぐに2回呼び出される – Sunita

関連する問題