2016-07-20 166 views
0

目標:使按鈕「添加到收藏夾」和頁面上的選定商品的地圖。 我的收藏後存儲在JS-cookie的陣列爲什麼wp_send_json返回null

liked = $.cookie("liked"); 
$.ajax({ 
    type: "GET", 
    url: ajaxurl, 
    data: { 
     action : 'ids', 
     id : liked 
    }, 
    success: function (response) { 
    console.log('AJAX response : ',response); 
} 

ID中的functions.php

add_action('wp_ajax_ids', 'ids_function'); 
add_action('wp_ajax_nopriv_ids', 'ids_function');  

function ids_function() 
{ 
    $myArray = array($_REQUEST['id']); 
    wp_send_json($myArray); 

} 

在頁面選擇商品我打電話finction ids_function()和頁面返回null的地圖。但是在console.log中,我看到了需要數組。如何讓它在我的頁面? TNX!

+0

你能後產生'null'代碼?如'$('。mydiv')。html('response ='+ response);'並輸出'response = null'? – gregn3

+0

'<? ids_function(); ?>'這會產生'null'。我需要在php數組中的id。 –

+0

你怎麼知道它是空的?你說它通常將內容寫入console.log? 該函數'wp_send_json()'也調用'die()',所以它永遠不會以PHP返回。 – gregn3

回答

0

不知道這是否是你想要完成的,但是,你可以重寫那個函數,當從PHP調用時也可以工作。

function ids_function ($is_ajax = true) 
{ 
    $myArray = array($_REQUEST['id']); 
    if ($is_ajax) 
    { 
     # NOTE: it die()-s here (after outputting the JSON data) 
     wp_send_json($myArray); 
    } 
    return $myArray; 
} 

然後你就可以像這樣從PHP調用它:

$myarray = ids_function (false); 

同時認爲,PHP和JavaScript運行在不同的時間...

+0

$ myarray = ids_function(false); print_r($ myarray); //返回Array([0] =>) - 不工作 –

+0

試試這個:'echo'

' . print_r ($_COOKIE, true) . '
';'。看看你的數據是否在那裏。也嘗試打印$ _REQUEST的內容。看看它是否在那裏。如果它在Cookie中,則應在頁面加載時由瀏覽器發送。然後你可以讀取ids_function()中的數據。例如'if(!$ is_ajax){/ *從$ _COOKIE或$ _REQUEST * /}讀取數據' – gregn3

+1

非常感謝! '$ _COOKIE'就是我需要的! '$ posts = get_posts($ _ COOKIE ['likes']);'工作正常! –