jQuery AJAX发布到PHP文件以更新数据库而不是更新
我正在尝试构建一个小型CMS系统,我想使用AJAX和jQuery来实现 如果我不使用AJAX代码,我不知道为什么数据传递不正确。AJAX成功返回“成功” 感谢您的帮助 以下是我的Javascript:jQuery AJAX发布到PHP文件以更新数据库而不是更新,php,jquery,mysql,ajax,post,Php,Jquery,Mysql,Ajax,Post,我正在尝试构建一个小型CMS系统,我想使用AJAX和jQuery来实现 如果我不使用AJAX代码,我不知道为什么数据传递不正确。AJAX成功返回“成功” 感谢您的帮助 以下是我的Javascript: $(document).ready(function(){ var aboutContent = $('#aboutContent').attr('value'); $('#aboutUpdate').submit(function() { $.ajax({
$(document).ready(function(){
var aboutContent = $('#aboutContent').attr('value');
$('#aboutUpdate').submit(function() {
$.ajax({
type: "POST",
url: "scripts/update.php",
data: "aboutUpdate="+aboutContent,
beforeSend: function(){ $('#aboutStatus').fadeIn(250).css('color', '#017c04').html('processing...'); },
success: function(){ $('#aboutStatus').fadeIn(250).css('color', '#017c04').html('Saved Successfully!').delay(500).fadeOut(250); },
error: function(){ $('#aboutStatus').fadeIn(250).css('color', '#ff464a').html('An error occurred!').delay(500).fadeOut(250); }
});
return false;
});
});
$('#aboutUpdate').submit(function() {
$.ajax({
type: "POST",
url: "scripts/update.php",
data: { aboutUpdate: $('#aboutContent').attr('value') },
beforeSend: function(){
$('#aboutStatus').fadeIn(250).css('color', '#017c04').html('processing...');
},
success: function(){
$('#aboutStatus').fadeIn(250).css('color', '#017c04').html('Saved Successfully!').delay(2500).fadeOut(250);
},
error: function(){
$('#aboutStatus').fadeIn(250).css('color', '#ff464a').html('An error occurred!').delay(2500).fadeOut(250);
}
});
return false;
});
这是我的HTML:
<?
$query = "SELECT * FROM pageContent WHERE page = 'about'";
$result = mysql_query($query);
while($rows = mysql_fetch_array($result)){
?>
<div class="pageContent">
<h2>About</h2>
<form id="aboutUpdate" method="post">
<textarea class="editor" id="aboutContent" cols="50" rows="20"><? echo $rows['content']; ?></textarea>
<input type="submit" value="Save Now"><span class="updateStatus" id="aboutStatus"></span>
</form>
</div>
<?
}
?>
尝试以下Ajax功能:
$.ajax({
type: "POST",
url: "scripts/update.php",
data: { aboutUpdate: aboutContent },
beforeSend: function(){ $('#aboutStatus').fadeIn(250).css('color', '#017c04').html('processing...'); },
success: function(){ $('#aboutStatus').fadeIn(250).css('color', '#017c04').html('Saved Successfully!').delay(500).fadeOut(250); },
error: function(){ $('#aboutStatus').fadeIn(250).css('color', '#ff464a').html('An error occurred!').delay(500).fadeOut(250); }
});
请注意POST数据行中的更改。绝对可以肯定,使用此
数据:“aboutUpdate=“+aboutContent
发送的内容完全错误
它应该是data:{aboutUpdate:aboutContent}
另外,我不确定textarea是否有属性值。试一试
$('#aboutContent').val()
或
修正了这个问题。以下是如何: 首先在TEXTAREA上,我需要指定属性
name="aboutUpdate"
因此PHP isset可以提取数据
其次,我注意到在提交时变量是“未定义的”
var aboutContent = $('#aboutContent').attr('value');
以下是工作Javascript:
$(document).ready(function(){
var aboutContent = $('#aboutContent').attr('value');
$('#aboutUpdate').submit(function() {
$.ajax({
type: "POST",
url: "scripts/update.php",
data: "aboutUpdate="+aboutContent,
beforeSend: function(){ $('#aboutStatus').fadeIn(250).css('color', '#017c04').html('processing...'); },
success: function(){ $('#aboutStatus').fadeIn(250).css('color', '#017c04').html('Saved Successfully!').delay(500).fadeOut(250); },
error: function(){ $('#aboutStatus').fadeIn(250).css('color', '#ff464a').html('An error occurred!').delay(500).fadeOut(250); }
});
return false;
});
});
$('#aboutUpdate').submit(function() {
$.ajax({
type: "POST",
url: "scripts/update.php",
data: { aboutUpdate: $('#aboutContent').attr('value') },
beforeSend: function(){
$('#aboutStatus').fadeIn(250).css('color', '#017c04').html('processing...');
},
success: function(){
$('#aboutStatus').fadeIn(250).css('color', '#017c04').html('Saved Successfully!').delay(2500).fadeOut(250);
},
error: function(){
$('#aboutStatus').fadeIn(250).css('color', '#ff464a').html('An error occurred!').delay(2500).fadeOut(250);
}
});
return false;
});
HTML:
您是否已通过ajax将名为的页面连接到数据库?您是否启用了
以查看那里是否发生了任何事情?另外,通过移动exit('n行后退出应用程序'),尝试单步执行代码代码>@coosal我有一个jquerycalled@Ohgodwhy我已经有了,AJAX响应是4或成功。我试过了,同样的问题,数据库并没有改变。刚刚重试,仍然失败。在PHP脚本的末尾添加一个else语句以查看数据库更新是否正在进行。嗯,如果您将MySQL更改为:“update pageContent SET content=”“$aboutContent.”“WHERE page='about'”
@Johnathan Bristow我尝试过,数据库仍然没有更新,如果我将upload.php POST设置为GET并调用upload.php?aboutUpdate=blah blah blah,它会工作。文本区域中的文本是否包含诸如“或”之类的特殊字符?
<?
$query = "SELECT * FROM pageContent WHERE page = 'about'";
$result = mysql_query($query);
while($rows = mysql_fetch_array($result)){
?>
<div class="pageContent">
<h2>About</h2>
<form id="aboutUpdate" method="post">
<textarea class="editor" id="aboutContent" name="aboutUpdate" cols="50" rows="20"><? echo $rows['content']; ?></textarea>
<input type="submit" value="Save Now"><span class="updateStatus" id="aboutStatus"></span>
</form>
</div>
<?
}
?>
$aboutContent = mysql_real_escape_string($_POST['aboutUpdate']);
if(isset($_POST['aboutUpdate'])){
$query="UPDATE pageContent SET content='".$aboutContent."' WHERE page='about'";
$result=mysql_query($query)or die(mysql_error());
if($result){
echo "Success";
}
else{
echo "Update Error";
}
}