我正在实施照片标记系统。
在我的php文件中我有:
if($_POST['type'] == "insert") {
$pid = $post->ID;
$tag_name = $_POST['tag_name'];
$tag_link = $_POST['tag_link'];
$pic_x = $_POST['pic_x'];
$pic_y = $_POST['pic_y'];
$arr = array("tag_name" => $tag_name, "tag_link" => $tag_link, "pic_x" => $pic_x, "pic_y" => $pic_y);
add_photo_tag($pid, $arr);
wp_redirect("http://www.test.com");
}
捕获数据。在我的js文件中我有:
$('#tagit #btnsave').live('click',function(){
name = $('#tagname').val();
link = $('#taglink').val();
counter++;
$('#taglist ol').append('<li rel="'+counter+'">'+counter+'. <a href="'+link+'#test_id" target="new">'+name+'</a> (<a class="remove">Entfernen</a>)</li>');
$('#imgtag').append('<div class="tagview" id="view_'+counter+'">'+counter+'</div>');
$('#view_' + counter).css({top:mouseY,left:mouseX});
$('#tagit').fadeOut();
$.ajax({
type: "POST",
url: "content.php",
data: "tag_name=" + name + "&tag_link=" + link + "&pic_x=" + mouseX + "&pic_y=" + mouseY + "&type=insert",
cache: true,
success: function(data) {
alert("success!");
}
});
});
不知何故变量没有传递给php导致我无法将数据正确保存到数据库。 问题必须在$ .ajax部分或php中的某个地方。有人能帮助我吗?
答案 0 :(得分:1)
嗯,您正在检查帖子变量$_POST['type'] == "insert_tag"
,而它的实际值是:&type=insert
。其他人看起来很好从来没有用户.live()
,它已经过时了,用.on()
此外,如果您的所有元素都在表单上,则可以使用$('your_form_selector').serialize()
- 这是您的帖子数据
答案 1 :(得分:0)
尝试使用以下代码:
$.ajax({
type: "POST",
url: "content.php",
data: {"tag_name": name,"tag_link":link,"pic_x": mouseX,"pic_y":mouseY, "type":"insert"},
//change here like I have done
cache: true,
success: function(data) {
alert("success!");
}
});
并将if($_POST['type'] == "insert_tag")
行替换为以下内容:
if($_POST['type'] == "insert")
因为$_POST['type']
传递的值是insert not insert_tag。
<强>编辑:强>
我发现还有一件事是你在初始化变量之前没有使用过var。使用var name = ...
答案 2 :(得分:0)
您的PHP代码正在寻找'type'等于'insert_tag'。
您的JavaScript正在使用type = insert进行POST - 因此您的php代码会忽略它。
答案 3 :(得分:0)
为什么要在PHP代码中重定向?删除这一行:
wp_redirect("http://www.test.com");
您可以使用某种简单的反馈系统替换它。毕竟,您希望服务器端传回状态,也许还有一些验证消息。
$return = array('status' => 0, 'msg' => 'all is well');
if(!add_photo_tag($pid, $arr)) {
$return['msg'] = __('Could not add photo tag.');
$return['status'] = -1;
}
echo json_encode($return);