2

我正在实施照片标记系统。

在我的 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 中的某个地方。有人能帮我吗?

4

4 回答 4

1

好吧,您正在检查 post 变量$_POST['type'] == "insert_tag",而它的实际值是:&type=insert。其他看起来不错。Btw never user .live(),它已经过时了,用.on()

此外,如果您的所有元素都在您可以使用的表单上$('your_form_selector').serialize()- 那将是您的帖子数据

于 2013-06-28T12:01:45.550 回答
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 而不是 insert_tag。

编辑:

我发现的另一件事是在初始化变量之前您没有使用 var。使用 var name = ...

于 2013-06-28T12:01:21.507 回答
0

您的 php 代码正在寻找 'type' 等于 'insert_tag'。

您的 JavaScript 使用 type=insert 发布 - 所以您的 php 代码会忽略它。

于 2013-06-28T12:03:38.197 回答
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);
于 2013-06-28T12:38:00.713 回答