2017-08-31 124 views
2

我正在向php文件發送x jQuery變量。將jQuery變量傳遞給functions.php Wordpress

這是我的jQuery與AJAX:

jQuery(document).ready(function($) { 

var x = jQuery('#sbering option:selected').val(); 
jQuery('#optionvalue').html(x); 

    jQuery.ajax({ 
     url: frontEndAjax.ajaxurl, 
     data: { 
      'action':'my_ajax_function', 
      'id' : x 
     }, 
     success:function(data) { 
      console.log(data); 
     }, 
    }); 
}); 

這是我送x變量的函數:

function my_ajax_function() { 

    if(isset($_REQUEST['id'])) { 
    $aux = $_REQUEST['id']; 
    echo "ID: " . $aux; 
    } 
    var_dump($aux); 
... 

,而不是打印既$ AUX和後續代碼var_dump($ AUX )在屏幕上 它們只在控制檯中可見,php中的$ aux是空的。

Image1 Image2

我在做什麼錯?

+0

有你嗎試圖簡單地將'$ _REQUEST ['id']'改成'$ _GET ['id']'? –

+0

@PeterDarmis,是的,結果相同! – deyan4

+0

您的代碼正常工作,因爲您在控制檯中獲得了'ID:...',如果您希望查看屏幕上的輸出,請嘗試直接訪問'ajaxurl',並在使用'GET'後添加正確的查詢參數。在你的情況下,這將是'?action = my_ajax_func&id = 5' –

回答

0

問題是在

$aux = json_decode($_POST['id']) 

只是用$_POST['id']只拿到價值

json_encode(...)提交響應

編輯:另外在您的文章發現錯誤

jQuery.post(aurl, {id: x}, 'json'); 

是錯的,因爲你是mi ssing完整功能或done()承諾處理

解決方案1:

jQuery.post(aurl, {id: x}, function(response) { 
    console.log(response); // just an example 
}, 'json'); 

解決方案2:

jQuery.post(aurl, {id: x}, null, 'json'); 

解決方案3:使用$.ajax如在另一種答案指定(其等於jQuery.ajax

一些有用的網址:

阿賈克斯:http://api.jquery.com/jquery.ajax/

帖子:http://api.jquery.com/jquery.post/

得到:http://api.jquery.com/jquery.get/

+0

我試過兩種方法,但我得到相同的空值。 – deyan4

+0

在問題var_dump($ _ POST) – saniales

+0

我已經試過了一切。我已經看到,WordPress的不同對待Ajax。這可能是我的問題嗎? – deyan4

0

做一個AJAX後的文件,像這樣:

$.ajax({  
    url:'address/to/your/file.php', 
    type: 'post', 
    data: {'JSON' : JSON}, 
    done: function(data) { 
     // this is for testing 
    } 
    }).fail (function() { 
     alert('error'); 
    }).always(function(data) { 
     alert(data);           
     //Loading or animation until you get a response back (if needed) 
    });   
}); 

和你的PHP文件應該更多這樣的:

<?php 

if(isset($_POST['AJAX'])) { //Checks if there is a POST request 
    $data = $_POST['AJAX']; //Then Assigns the data in the Post request to $data 

    ..... 

} else { 
    echo 'Error: No Data recieved'; 
} 

?>