尝试让jQuery发送textarea的内容来更新记录,但它不会。当我更改textarea的值,使其以数字开头,然后它发送正常。我可以使用alert()验证内容是否已成功传递给JS函数,但它无法访问PHP文件。所有其他JS函数都可以正常工作。
编辑以添加更多可能相关的代码。
使用Javascript:
<script>
function add_vid(t) {
if ($('#vref').val().length <5) return;
var vref = $('#vref').val();
$.ajax({
type: 'POST',
url: 'inc/ajax.php',
data: { 'a':'add_vid', 't':'<?=$_SESSION['t']?>', 'vref':vref},
beforeSend:function(){
$('#add_vid_status').html('Adding...');
},
success:function(data){
if (data == 'added') {
$('#add_vid_status').html('Added');
$('#vid_list').prepend('<div align="center" class="vid">'+vref+'</div>');
$('#vref').val('');
}
else $('#add_vid_status').html('Error');
},
error:function(){
$('#add_vid_status').html('Error');
}
});
}
function del_vid(id) {
var confirmdel = confirm('Delete ?');
if (confirmdel) {
$.ajax({
type: 'POST',
url: 'inc/ajax.php',
data: { 'a':'del_vid', 't':'<?=$_SESSION['t']?>', 'id':id},
success:function(data){
if (data == 'deleted') {
$("#v"+id).hide(900);
}
},
error:function(){
//$("#"+msg_id+'_a').html('error');
}
});
}
return false;
}
function update_vid(id) {
vref = $("#update"+id).val();
alert(vref);
$.ajax({
type: 'POST',
url: 'inc/ajax.php',
data: { 'a':'update_vid', 't':'<?=$_SESSION['t']?>', 'id':id, 'vref':vref},
success:function(data){
alert(data);
if (data == 'updated') {
$("#if"+id).html(vref);
}
},
error:function(){
//$("#"+msg_id+'_a').html('error');
}
});
return false;
}
function move_vid(id,dir) {
$.ajax({
type: 'POST',
url: 'inc/ajax.php',
data: { 'a':'move_vid', 't':'<?=$_SESSION['t']?>', 'id':id,'dir':dir},
success:function(data){
pos = data.split('_');
pos_from = pos[0];
pos_to = pos[1];
//$("#if"+id).hide();
if ($("#pos"+pos_to).length) {//if the id2 is on page (and not on a different paginated page) - swap them on-screen
temp_html = $("#pos"+pos_from).html();
$("#pos"+pos_from).html($("#pos"+pos_to).html());
$("#pos"+pos_to).html(temp_html);
temp_html = null;
}
else $("#pos"+pos_from).html('<div>Video moved off page.<br> Reload to see the result.</div>');
//$("#if"+id).fadeIn(400);
},
error:function(){
//$("#"+msg_id+'_a').html('error');
}
});
return false;
}
</script>
HTML:
<textarea name="vref" cols="55" rows="3" id="vref" placeholder="Video embed code"></textarea>
<input type="button" value="Add" onclick="add_vid('<?=$_SESSION['t']?>')"> <span id="add_vid_status"></span>
<input type="button" value="update" onClick="update_vid(27)">
<textarea cols="65" rows="3" id="update27"><iframe src="http://player.vimeo.com/video/123456789?byline=0&portrait=0" width="500" height="281" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></textarea>
PHP代码:
<?
session_start();
if ($_SESSION['auth'] != 1 || $_POST['t'] != $_SESSION['t']) exit();
elseif (isset($_POST['a'])) {
require_once('cfg.php');
db_connect();
if ($_POST['a'] == 'add_vid' && strlen($_POST['vref'])>4) {
//ADDS VIDEO TO DB AND ECHOES "added"
}
elseif ($_POST['a'] == 'del_vid' && is_numeric($_POST['id'])) {
//DELETES VIDEO AND ECHOES "deleted"
}
elseif ($_POST['a'] == 'update_vid' && is_numeric($_POST['id']) && strlen($_POST['vref']>4)) {
$id = (int)$_POST['id'];
//echo 'PHP: '.$_POST['vref']; (here i can test if the argument reaches.)
$vref = mysql_real_escape_string($_POST['vref']);
$q = mysql_query("UPDATE `videos` SET `vref`='{$vref}' WHERE `id`={$id}") or die ('update error: '.mysql_error());
if ($q) echo 'updated';
}
// CODE GOES ON...
}
?>
答案 0 :(得分:0)
你的Ajax数据对象中有一个拼写错误:
't':'<?=$_SESSION['t']?>'
您使用相同类型的引号两次,因此Javascript认为t
是变量,并且无法识别它。更改这样的引号可以修复代码抛出的错误:
't':'<?=$_SESSION["t"]?>'
其他,如果你 意味着这是一个变量,你需要使用它如下:
't':'<?=$_SESSION["'+ t +'"]?>'
答案 1 :(得分:0)
在放弃更新功能之后,昨天当我想复制类似项目的代码时,我注意到我在检查字符串长度的PHP代码中的明显错误:我写了strlen($_POST['vref']>4)
而不是{{ 1}}。后
纠正这一点它完美无缺。