2015-02-06 23 views
-1

我在單擊按鈕上提交表單,但是無論我更改過那些數據沒有發送但發送了以前的數據,是否有一種方法可以在其中提交表單中字段的數據然後發送?動態更改jQuery中沒有看到發送的jsp形式的值

$j("body").on('click', "#btn_snd",function(){ 
    Retive_Property_name(); 
     $j(this).closest("form").submit(); 
     }); 
}); 

的變化是使用AJAX

function Retive_Property_name() 
{ 
$j(".class_cat").hide(); 
var property_name=$j("#property_name").val(); 
$j.ajax({ 
    type : "POST", 
    url : "ShowCat.jsp", 
    data : "property_name=" + property_name , 
    success : function(data) { 

     if(data.trim()=="No") 
     { 

      $j("#Cat_name_hidden").val("General"); 
      alert("Inside No"); 

     } 
     else if(data.trim()=="Yes") 
      { 

      alert("Inside yes"); 
      if($j("#Cat_name").val()==null) 
       { 
       $j("#Cat_name_hidden").val(" NULL"); 
       } 
      else 
       { 

       // 

        alert("Categories:-"+$j("#Cat_name").val()); 
        $j("#Cat_name_hidden").val($j("#Cat_name").val()); 

        // 
       arr1=$j("#Cat_name").val(); 
       } 
      $j(".class_cat").show(); 
      } 
     alert(); 
    } 
}); 


} 

這是改變功能

+0

'Change_Functions();'做什麼? – 2015-02-06 06:07:51

+0

您可否詳細說明一下,'我改變了沒有發送數據但發送了以前的數據'是什麼意思......是否來自prepopulated的數據。 – 2015-02-06 06:08:06

+0

如果我刪除.submit()並使用另一個按鈕提交,則更改的數據將發送。 – 2015-02-06 06:09:34

回答

0

,而不是調用的submit功能從on函數來完成:

$j(this).closest("form").submit(); 

你可以做到這一點你的Ajax調用後success函數中完成:

$j("#btn_snd").closest("form").submit(); 

我的猜測是,AJAX請求完成,因此舊值發佈之前的形式被提交。所以理想的變化函數是:

function Retive_Property_name() 
    { 
    $j(".class_cat").hide(); 
    var property_name=$j("#property_name").val(); 
    $j.ajax({ 
     type : "POST", 
     url : "ShowCat.jsp", 
     data : "property_name=" + property_name , 
     success : function(data) { 

      if(data.trim()=="No") 
      { 

       $j("#Cat_name_hidden").val("General"); 
       alert("Inside No"); 

      } 
      else if(data.trim()=="Yes") 
       { 

       alert("Inside yes"); 
       if($j("#Cat_name").val()==null) 
        { 
        $j("#Cat_name_hidden").val(" NULL"); 
        } 
       else 
        { 

        // 

         alert("Categories:-"+$j("#Cat_name").val()); 
         $j("#Cat_name_hidden").val($j("#Cat_name").val()); 

         // 
        arr1=$j("#Cat_name").val(); 
        } 
       $j(".class_cat").show(); 
       } 
      alert(); 
      $j("#btn_snd").closest("form").submit(); 
     } 
    }); 


} 
+0

這是sm解決方案,你可以告訴我爲什麼在ajax調用之前發送頁面? – 2015-02-06 07:00:27

+0

或者il這樣說,y是最後執行的ajax功能alwaz? – 2015-02-06 07:00:55

+0

Ajax函數向服務器發送請求,因此需要花費時間來獲取響應。但是你正在調用'$ j(this).closest(「form」)。submit();'在ajax調用之後,它不能保證請求已經完成。它只能在ajax調用的'success'函數內保證。 – ArinCool 2015-02-06 07:04:04