簡體   English   中英

Wordpress-將javascript變量傳遞給php

[英]Wordpress - Passing javascript variable to php

我正在實施照片標記系統。

在我的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中。 有人能幫我嗎?

好吧,您正在檢查發布變量$_POST['type'] == "insert_tag"而實際值是: &type=insert 其他人看起來很好。 順便說一句永遠不要使用.live() ,它已經過時了,請使用.on()

另外,如果所有元素都在表單上,​​則可以使用$('your_form_selector').serialize() -這就是您的帖子數據

嘗試以下代碼:

$.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_tag。

編輯:

我發現的另一件事是您在初始化變量之前沒有使用過var。 使用var name = ...

您的php代碼正在尋找“類型”等於“ insert_tag”。

您的JavaScript正在使用type = insert進行發布-因此您的php代碼將忽略它。

為什么要重定向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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM