2013-12-07 130 views
0

我想提交一個表單,其中有通過jquery由用戶添加的字段,問題是通常的方式提交它忽略了這些用戶定義的字段。我使用提交功能,而不是在jQuery中,但我收到錯誤。我在下面做錯了什麼?提交時出現jquery語法錯誤

$(document).ready(function() { 
    $('#form').on('submit', function(e) { 
     //prevent the default submithandling 
     e.preventDefault(); 

     //alert(1); 
     //send the data of \'this\' (the matched form) to yourURL 
     $('processme.php', $(this).serialize()).submit; 
    }); 
}); 

我想他之前發佈的功能,但由於它並不真正去到頁面上的帖子就引起了500服務器錯誤,這會工作,但它的鞋在Firebug控制檯的串行數據的語法錯誤。

感謝您的幫助

編輯:

這是確切的錯誤「錯誤:語法錯誤,無法識別的表達式:點評詳情= & userval = 2 /jquery-1.9.1.js 線4421 throw new Error(「Syntax error,unrecognized expression:」+ msg);「

下面是用於添加新的輸入字段的代碼:

function addRow(){ 
$('#tbl1').find('tbody:last').after('<tr><td>User Defined</td><td><input name="userdef[]" value="" type="text"></td>/td></tr>'); 
} 

P.S的processme.php具有內置轉發依賴於驗證響應。所以需要將帖子提交給processme.php。

PHP代碼:

print_r($_POST); 
print_r($_POST("userdef")); echo "<br/>"; 
     foreach ($_POST("userdef") as $key=>$val) { 
      echo $key." - ".$val.", "; 
     } 
     exit() 

輸出:

Array ([userdef] => Array ([1] => 11111) [userval] => Array ([0] =>)) 
+0

這條線應該做什麼? '$(\'processme.php \',$(this).serialize())'。還顯示添加新輸入字段的代碼...他們都有'name'嗎?沒有'name' =沒有提交 – charlietfl

+0

爲什麼你在每次報價之前都有\? – iab

+0

只是將'\''改爲''''或'「' – balexandre

回答

1

我認爲最好的辦法是使用內置的提交功能。

我的猜測是這些字段要麼沒有正確添加到表單中,要麼他們沒有正確命名。

如果您可以發佈該部分的代碼,我們可能會得到這個工作。

試試這個,看看原來提交的東西正常工作

var count = 0; 
function addRow(){ 
    count++; 
    $('#tbl1').find('tbody:last').after('<tr><td>User Defined</td><td><input   name="userdef['+count+']" value="" type="text"></td>/td></tr>'); 
} 



foreach ($_POST['userdef'] as $key => $val){ 
    echo $key . ' = ' . $val . '\n'; 
} 
+0

好的,所以我已經完成了這個工作。當我print_r($ _ POST)時,我可以看到多維數組,但是當我嘗試時我看不到任何東西循環通過$ _POST ['userdef'] ..任何想法? –

+0

Array([userdef] => Array([1] => 11111)[userval] => Array([0] =>) –

+0

您可以將代碼塊中的print_r添加到原始帖子中,以便我可以看到它所有格式化和漂亮,也代碼循環通過它可能會有所幫助 – dsharris

0

試試這個方法:

$('#form').on('submit',function() { 

    var url = "processme.php"; 

    $.ajax({ 
      type: "POST", 
      url: url, 
      data: $(this).serialize(), // serializes the form's elements. 
      success: function(data) 
      { 
       alert(data); // show response from the php script. 
      } 
     }); 

    return false; // avoid to execute the actual submit of the form. 
}); 
+0

問題是,processme.php有一個轉發內置取決於驗證響應。所以這種方式是行不通的。 –

+0

如果你也可以分享你的php代碼,那麼我們可以很容易地弄清楚。 –

0

我覺得$('processme.php', $(this).serialize()).submit是問題。你的意思是做$.get.submit是無用的。

$(document).ready(function() { 
    $('#form').on('submit', function(e) { 
     //prevent the default submithandling 
     e.preventDefault(); 

     //alert(1); 
     //send the data of \'this\' (the matched form) to yourURL 
     $.get('processme.php', $(this).serialize()); 
    }); 
});