2013-04-15 97 views
1

我想從jquery和ajax的textarea更新MySQL數據庫,但無法獲得文本區域的更新內容傳遞到PHP頁面。與jQuery的AJAX更新ajax

我有一個頁面,在頁面上,我點擊一個按鈕,打開一個圖層並調用edit_box函數。

然後該圖層使用數據庫中的數據填充表單域。

textarea是一個nicedit盒子,並且一直運行良好,直到我點擊保存並且我對textarea所做的任何更改都沒有通過。只有原始內容。

它似乎很明顯,但我似乎無法捉摸

任何幫助讚賞問題

繼承人的代碼

html頁面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
<style type="text/css"> 
    #popupbox{ 
    padding:0; 
    width: 99%; 
    height: auto; 
    margin: 0px auto; 
    position:absolute; 
    background: #FBFBF0; 
    border: solid #000000 2px; 
    z-index: 9000; 
    font-family: arial; 
    visibility: hidden; 
    } 
</style> 
<script type="text/javascript" src="http://js.nicedit.com/nicEdit-latest.js"></script> 
<script> 

function get_edit_content(box_id,page_ref,template_ref) 
    { 
    $.get("get_content.php", { box_id: box_id, page_ref: page_ref, template_ref:template_ref }) 
    .done(function(data) { 
     document.getElementById("box_id").value = box_id; 
     document.getElementById("edit_content").value=data; 
     var area1 = new nicEditor({fullPanel : true}).panelInstance("edit_content",{hasPanel : true});   
     }); 
    } 


    function edit_box(showhide,box_id,page_ref,template_ref){ 
    if(showhide == "show"){  
    get_edit_content(box_id,page_ref,template_ref); 
      document.getElementById('popupbox').style.visibility="visible"; 
    }else if(showhide == "hide"){ 
      document.getElementById('popupbox').style.visibility="hidden";  
    } 
    } 

    $(document).ready(function() 
{  
     $('#sub').click(function (e) 
    { 
     e.preventDefault(); 
     $.ajax({type:'POST', url: 'update_textarea.php', data:$('#myFrm').serialize(), success: 
     function(response) 
     { 
     alert(response); 
     } 
    }); 

    }); 
}); 
</script> 
</head> 

<body> 
<div id="popupbox"> 
    <form id="myFrm"> 
    <input type="hidden" name="page_ref" value="<? echo $page_ref; ?>" /> 
    <input type="hidden" name="template_ref" value="<? echo $template_ref; ?>" /> 
    <input type="hidden" id="box_id" name="box_id"/> 
    <textarea name="edit_content" id="edit_content" style="width: 500px; height:500px;"></textarea> 
    <button id="sub" >Save</button> 
    <center><a href="javascript:edit_box('hide');">close</a></center> 
    </form> 

</div> 
</body> 
</html> 

PHP頁面

<? 
    include("connect.php"); 
$page_ref = $_POST['page_ref']; 
$template_ref = $_POST['template_ref']; 
$box_id = $_POST['box_id']; 
$edit_content = addslashes($_POST['edit_content']); 
if(mysql_query("UPDATE site_content SET content='$edit_content' WHERE page_ref='$page_ref' AND template_ref='$template_ref' AND box_id='$box_id' AND box_type='text'")) 
    { 
     echo "page_ref=".$page_ref." template_ref=".$template_ref." box_id=".$box_id." edit_content=".$edit_content; 
    } 
else 
    { 
     echo "error"; 
    } 


    ?> 
+0

您正在使用[an **過時的**數據庫API](http://stackoverflow.com/q/12859942/19068)並應使用[現代替換](http://php.net/manual/) EN/mysqlinfo.api.choosing.php)。你也**易受[SQL注入攻擊](http://bobby-tables.com/)**,現代的API會使[防禦]更容易(http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)自己從。 – Quentin

回答

0

確定設法解決這個小片段的問題。

$(document).ready(function() { 
$('#sub').click(function() { 
    var edit_content = $('#myFrm').find('.nicEdit-main').text(); 
    var box_id = $('#myFrm').find("#box_id").val(); 
    var page_ref = $('#myFrm').find("#page_ref").val(); 
    var template_ref = $('#myFrm').find("#template_ref").val(); 
    $.post("update_textarea.php", {box_id:box_id, page_ref:page_ref, template_ref:template_ref, edit_content:edit_content }, 
    function(status){ 
    alert(status);  
    }); 
}); 
}); 

我把保存按鈕放在表單之外來停止發佈的表單。

0

這一切看起來不錯乍一看,但試試這個:

$query = "UPDATE site_content SET content='$edit_content' WHERE page_ref='$page_ref' AND 
template_ref='$template_ref' AND box_id='$box_id' AND box_type='text'"; 
echo "Query = $query <br />"; 
mysql_query($query); 

這將輸出你正在嘗試運行,並在調試可以幫助查詢。請嘗試此操作,並在此處發佈回顯結果。

+0

您好我使用您的代碼更新了PHP頁面,這是返回的輸出「Query = UPDATE site_content SET content ='newtext'WHERE page_ref ='170'AND template_ref = '15'AND box_id = '10'AND box_type ='文本'
「,但框的實際內容是」newtext bnvnvbsasas「 –

+0

我發現,如果我從textarea刪除nicedit,然後是通過任何更新的文本pures,所以它與nicedit –

+0

是的事實的是,一直在嘗試有些東西也是這樣。擺脫nicedit我會說... – Borniet