2013-11-20 68 views
0

我正在開發一個網頁,它通過一些javascript/jquery代碼動態地創建一個帶有多個選擇標籤的表單。提交表單時,php文件(form_submit.php)必須處理提交的表單域。此外,我使用Netbeans 7.4進行php調試。提交表單無法正常工作

我的問題:當我在窗體中選擇一些值並提交表單時,調試器在form_submit.php中顯示空的提交值(例如,默認值「NOSELECTION」用於不選),而不是選定的值。下面代碼中提交函數中的控制檯確實顯示了選定的提交值(因此也確認了帶有選擇標記的內置html表單是正確的)。

我不認爲這是Netbeans中的一個錯誤,那麼我在哪裏出錯?我懷疑是jQuery的一個bug提交以下功能,但我不能看看它......

Javascript代碼:

//main function document ready  
$(document).ready(function(){ 

//only part of code here to build the form with a number of <select>'s 
ecorp_eproductoptions = '<select id="selected_eproductid'+ff+'" class="eprodtype" name="selected_eproductid'+ff+'">'; 
ff++; 
ecorp_eproductoptions += '<option selected="selected" value="NOSELECTION" > Koppel uw product </option>'; 

for(var k=0; k< Staticvars.ecorp_nrofeproducts;k++){ 
    ecorp_eproductoptions += '<option value="'+ Staticvars.suppliername[i] +'_'+Staticvars.agreementid[i] +'_'+ supplier_eproductid +'_'+ Staticvars.ecorp_eproductid[k] +'"> '+ Staticvars.ecorp_eproductname[k] +' </option>'; 
    }//for var k 
    ecorp_eproductoptions += '</select>'; 
    form += '<td> '+ ecorp_eproductoptions +' </td></tr>'; 
//etc... 

//FUNCTION Submit() 
$("#myForm").submit(function(){ 

    console.log('SUBMITTED FORM: '+ $(this).serialize()); //shows values for select tags! 

    $.ajax({ 
     type: "POST", 
     url: "form_submit.php", 
     data: $("#myForm").serialize(), 
     dataType: "json", 

     success: function(msg){ 
     if(msg.statusgeneral == 'success'){ 

     } 
     else 
     { 

     }//else 
     }, //succes: function 
     error: function(){ 

    $("#errorbox").html("There was an error submitting the form. Please try again."); 
     } 
    });//.ajax 

//make sure the form doesn't post 
return false; 


});//$("#myForm").submit() 

}); //$(document).ready 

HTML代碼:

<form id="myForm" name="myForm" action="" method="post">  
    <div id="wrapper"></div> <!--anchor point for adding set of product form fields --> 
    <input type="hidden" name="form_token" value="<?php echo $form_token; ?>" /> 
    <input type="submit" name="submitForm" value="Bevestig"> 
</form> 
+0

注意,在瀏覽器的控制檯,您顯示由'$(本).serialize返回()'的價值,但您發佈'$( 「#myForm」)。序列()'。也許這就是原因。 – akonsu

+0

thx給你評論;你建議我發錯嗎?那麼應該是什麼正確的職位? – Joppo

+0

我會嘗試發佈'$(this).serialize()',看看它是否有任何區別。 – akonsu

回答

0

我是新來的jQuery也是如此,但我認爲問題在於你的$.ajax調用異步運行,這允許submit事件處理程序繼續並在表單發送值之前返回false ...只是一個新手猜測。 :)

您是否嘗試過在您的$.ajax呼叫中添加async: false

+0

,但他使用'return false;' –

+0

我的理解是'return false'是爲了防止表單元素執行提交的默認操作。 'async'屬性決定了當AJAX請求正在進行時功能是否繼續......對嗎? – thankyour

+0

@thankyour:我嘗試了異步:錯誤的建議;然後窗體停止工作(所以我不能輸入表單輸入)。 – Joppo

0

我不知道爲什麼會發生這一點,但請儘量將

$("#myForm").submit(function(){ 
var dataAjax = $(this).serialize(); 
console.log('SUBMITTED FORM: '+ dataAjax ); //shows values for select tags! 

$.ajax({ 
    type: "POST", 
    url: "form_submit.php", 
    data: dataAjax, 
    dataType: "json", 

    success: function(msg){ 
    if(msg.statusgeneral == 'success'){ 

    } 
    else 
    { 

    }//else 
    }, //succes: function 
    error: function(){ 

$("#errorbox").html("There was an error submitting the form. Please try again."); 
    } 
});//.ajax 
//make sure the form doesn't post 
return false; 
});//$("#myForm").submit() 
+0

thnx。不幸的是,這個建議沒有改變... – Joppo

+0

好的,但你在控制檯瀏覽器中得到什麼? –

+0

控制檯輸出:提交的表格:agreementapproval0 = SolarX_10&selected_emeterproductid0 = SolarX_10_1_1&selected_eproductid0 = SolarX_10_2_4&selected_emeterproductid1 = NOSELECTION&selected_emeterproductid2 = NOSELECTION&selected_eproductid1 = NOSELECTION&selected_eproductid2 = NOSELECTION&form_token = 0cdd3d4b77bf1d5b16c51c0bd094162a – Joppo