2013-08-16 36 views
1

我正在使用contenteditable功能,我試圖更新多個字段,但是當我嘗試通過2個字段時,這似乎不起作用,它與一個完美工作。當我點擊保存按鈕時,我甚至不會收到錯誤信息。如何通過jQuery傳遞多個參數到php

我相信我沒有正確傳遞數據,這是因爲我缺乏知識。

index.php 

<?php 
     //get data from database. 
     include("db.php"); 
     $sql = mysql_query("select * from datadump where id='1'"); 
     $row = mysql_fetch_array($sql);  ?> 
<div id="wrap"> 
    <header><h1>Contenteditable Database driven</h1></header> 

    <div id="status"></div> 

    <div id="maincontent"> 

    <div id="editable" contentEditable="true"> 
<?php 
     echo $row['content']; 
    ?>  
    </div> 
    <div id="editablea" contentEditable="true"> 
    <?php 
     echo $row['name']; 
    ?> 
    </div> 
    <button id="save">Save</button> 
    </div> 

JS/js.js

$(document).ready(function() { 

    $("#save").click(function (e) {   
     var content = $('#editable').html();  
    var name = $('editablea').html(); 

     $.ajax({ 
      url: '/save.php', 
      type: 'POST', 
      data: { 
      content: content, 
      name: editablea 
      },    
      success:function (data) { 

       if (data == '1') 
       { 
        $("#status") 
        .addClass("success") 
        .html("Data saved successfully") 
        .fadeIn('fast') 
        .delay(3000) 
        .fadeOut('slow'); 
       } 
       else 
       { 
        $("#status") 
        .addClass("error") 
        .html("An error occured, the data could not be saved") 
        .fadeIn('fast') 
        .delay(3000) 
        .fadeOut('slow'); 
       } 
      } 
     }); 

    }); 

    $("#maincontent").click(function (e) { 
     $("#save").show(); 
     e.stopPropagation(); 
    }); 

    $(document).click(function() { 
     $("#save").hide(); 
    }); 

}); 

save.php

<?php 
include("db.php"); 
$content = $_POST['content']; 
$name = $_POST['editablea'];//get posted data 
$content = mysql_real_escape_string($content); //escape string 

$sql = "UPDATE datadump SET content = '$content', name = '$name' WHERE id = '1' "; 

if (mysql_query($sql)) 
{ 
    echo 1; 
} 
?> 
+3

前面的斜線在你的數據,你有名爲內容和editablea的變量,但我沒有看到任何變量editablea,而應該使用名稱是猜測。 – WordsWorth

回答

1

而不是

data: { 
      content: content, 
      name: editablea 
      }, 

嘗試:

data: { 
      contentLabel: content, 
      nameLabel: name 
      }, 

edittablea不是一個定義的javascript變量。

 $("#save").click(function (e) {   
      var content = $('#editable').val();  
      var name = $('#editablea').val(); 
      alert(content); 
      alert(name); 

      $.ajax({ 
       url: 'save.php', 
       type: 'POST', 
       data: { 
       contentLabel: content, 
       nameLabel: name 
       },    
       success:function (data) { 

    //save.php 
    <?php 
    $content = $_POST['contentLabel']; 
    $name = $_POST['nameLabel']; 

另外,如果save.php位於同一文件夾作爲你的Ajax調用腳本,那麼你就不需要在/save.php

+0

這不起作用,但它確實使錯誤信息顯示我也改變了我的PHP文件$ name = $ _POST ['editablea'];到$ name = $ _POST ['name'];仍然沒有更新數據庫 – 001221

+0

它應該是$ name = $ _ POST ['nameLabel'];使用Firebug查看您實際發佈到您的Ajaqx腳本的數據 – JRizz

+0

我也嘗試過,並且這停止顯示錯誤消息,代碼允許我通過「內容」更改但不通過「名稱」更改。我改變了var name = $('#editablea')。html();說var nameLabel,這仍然沒有工作,所以我很困惑,爲什麼它不工作 – 001221