将jQuery变量传递给functions.php Wordpress

时间:2017-08-31 12:05:20

标签: jquery ajax wordpress

我将 x jQuery变量发送到php文件。

这是我的jQuery with 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是Null。

Image1 Image2

我做错了什么?

2 个答案:

答案 0 :(得分:1)

问题在于

(%i1) sol: nullspace(matrix([1,0,0],[0,0,0],[0,0,0]));
                                   [ 0 ]  [ 0 ]
                                   [   ]  [   ]
(%o1)                         span([ 0 ], [ 1 ])
                                   [   ]  [   ]
                                   [ 1 ]  [ 0 ]
(%i2) answer_student: span(matrix([0],[0],[2]),matrix([0],[2],[0]));
                                   [ 0 ]  [ 0 ]
                                   [   ]  [   ]
(%o2)                         span([ 0 ], [ 2 ])
                                   [   ]  [   ]
                                   [ 2 ]  [ 0 ]
(%i3) is(sol = answer_student);
(%o3)                                false

仅使用$aux = json_decode($_POST['id']) 获取值

$_POST['id']提交回复

编辑:还发现帖子中有错误

json_encode(...)

错了,因为您缺少完整的功能或jQuery.post(aurl, {id: x}, 'json'); 承诺处理

解决方案1:

done()

解决方案2:

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

解决方案3:使用另一个答案中指定的jQuery.post(aurl, {id: x}, null, 'json'); (等于$.ajax

一些有用的网址:

Ajax:http://api.jquery.com/jquery.ajax/

发布:http://api.jquery.com/jquery.post/

获取:http://api.jquery.com/jquery.get/

答案 1 :(得分: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';
}

?>