7

1 週間以上さまざまなオプションを試してきましたが、何もうまくいかないようです。これを少し複雑にしているのは、ページに複数のフォームがあり、それらすべてを同じ送信機能に関連付ける必要があることです。それらはすべて異なる ID を持っています。

以下は、私の jQuery の簡略化されたバージョンです。

$('form').on('submit', function(form){
    var data = $(this).serialize();
    $.ajax({
        type:       'POST',
        cache:      false,
        url:        'inc/process.php',
        data:       data,
        success:    function(){
                        // The following fires on first AND second submit
                        console.log("Updates have successfully been ajaxed");
        }
    });
    return false;
});

私も$('form').submit()同じ結果で使用してみました。

process.php の関連セクション:

$query =    'UPDATE     pop_contents
            SET     ';
$id = $_POST['content_id'];
/* to avoid including in MySQL query later */
unset($_POST['content_id']);

$length = count($_POST);
$count = 0;
foreach($_POST as $col => $value){
    $value = trim($value);
    $query .= $col."='".escapeString($value);
    // don't add comma after last value to update
    if(++$count != $length){ $query .= "', "; }
    // add space before WHERE clause
    else{ $query .= "'  "; }
}
$query .= 'WHERE        id='.$id;

$update_result = $mysqli->query($query);
4

4 に答える 4

26

多くの髪を引っ張って罵倒した後、私は問題を解決しました.

TinyMCE エディター インスタンスは直接編集しないtextareasため、フォームを送信するには、最初にTinyMCE APItinyMCE.triggerSave()から呼び出す必要がありました。したがって、作業コードは次のようになります。

$('form').on('submit', function(form){
    // save TinyMCE instances before serialize
    tinyMCE.triggerSave();

    var data = $(this).serialize();
    $.ajax({
        type:       'POST',
        cache:      false,
        url:        'inc/process.php',
        data:       data,
        success:    function(){
                        console.log("Updates have successfully been ajaxed");
        }
    });
    return false;
});
于 2012-08-02T16:47:35.777 に答える
3

tinyMce 経由で Ajax 文字列データを渡すと混乱しました..しかし、php でデータベースに保存されません...それから私は

tinyMCE.triggerSave();
event.preventDefault();

それなら大丈夫…………

$("#save").click(function() {
tinyMCE.triggerSave();
event.preventDefault();
var data = $(this).serialize();
 var position = $("#position").val();
 var location = $("#job_location").val();
|
|
|
|
 var end_date = $("#end_date").val();
 var dataString = '&position='+ position + '&job_location=' + location + '&job_category=' + category + '&job_des=' + job_des +'&job_res='+ job_res + '&job_requ='+ job_requ + '&start_date='+ start_date + '&end_date='+ end_date;
alert(dataString);
 $.ajax({
 type: "POST",
 url: "regis.php",
 data: dataString,
 success: function(data){

 }
 });
 return false;
 });
于 2012-12-07T09:25:01.737 に答える
0

問題は、フォームのデフォルトのアクションを妨げていないことだと思います。これを試して

$('form').bind( 'submit', function(event) {
   event.preventDefault(); // added
   console.log("Binding"); // changed to console.log
    $.ajax({
      type: "POST",  
      url: "inc/process.php",
      data: $(this).serialize(),
      success: function() {
        console.log("Your updates have successfully been added."); // changed to console.log
      }
    });
});
于 2012-07-18T18:50:03.950 に答える