从Jquery定义PHP变量值

时间:2014-01-08 00:57:57

标签: php jquery ajax

我需要将jQuery中变量的值传递给PHP中的变量值。

我正在使用wordpress并且已经运行了AJAX。

实施例

Jquery的

var pie = 12;

然后将pie的值传递给。

-

PHP

<?php $new_pie = <b>value from var pie in jquery needs to go here.</b> ?>

希望有道理。 谢谢你们。

修改

谢谢OhGodWhy

看起来像。

虽然让它工作有点麻烦。

在wordpress工作..

的jQuery

var pie = 'test';

$.ajax({
   url: 'http://localhost:8888/ph/wp/wp-admin/admin-ajax.php',
   type: 'POST',
   action: 'MyAjaxFunction',  
  data: { pie : pie },
  success: function (data){
     console.log(data);
  }
});

的functions.php

add_action( 'wp_ajax_nopriv_my_ajax_function', 'MyAjaxFunction' );
add_action( 'wp_ajax_my_ajax_function', 'MyAjaxFunction' );

function my_ajax_function() {
$new_pie = isset($_POST['pie']) ? $_POST['pie'] : false;
echo($new_pie);
}

2 个答案:

答案 0 :(得分:2)

使用jQuery的AJAX将数据发送到服务器。

$.ajax({
   url: '/path/to/my/script.ext',
   type: 'POST',
   data: { pie : pie },
   success: function (data){
       console.log(data);
   }
});

使用三元运算符分配给变量。稍后在您的脚本中,您可以检查if($new_pie),如果它返回true,则该值已发布,否则它从未发布,您可以执行此时所需的任何逻辑。

$new_pie = isset($_POST['pie']) ? $_POST['pie'] : false;

修改

  • 根据上面的代码,这是Wordpress,并且您没有正确创建动作挂钩。请允许我解决这个问题。

&#34;行动&#34;您在ajax调用中提供的参数实际上是data对象的一部分。它还必须与wp_ajax_参数中的wp_ajax_nopriv_add_action后面的内容完全匹配,请参阅下面的正确实现。

jQuery的:

$.ajax({
    url: ajaxurl, //super global supplied by Wordpress; do not change
    type: 'POST',
    data: { 
        action: 'get_post_title', //this is correct
        pie : pie 
    },
    success: function (data){
        console.log(data);
    }

});

现在,您的add_action实际上会传递AJAX请求,因为get_post_title已正确传递为您的AJAX请求中的操作。

此外,add_action的第二个参数是文字函数名称,不能与函数声明有任何不同,请参阅下文:

add_action( 'wp_ajax_nopriv_get_post_title', 'my_ajax_function' );
add_action( 'wp_ajax_get_post_title', 'my_ajax_function' );

function my_ajax_function() {
    $new_pie = isset($_POST['pie']) ? $_POST['pie'] : false;
    echo($new_pie);
}

请注意, 'my_ajax_function中的add_actionfunction my_ajax_function(){的功能声明完全匹配。

这将解决您的问题。

答案 1 :(得分:0)

您需要使用jQuery.ajax()将jQuery数据发送到PHP脚本。

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