将带有JQuery和ajax的变量传递给PHP并使用$ _POST获取它

时间:2012-07-02 02:51:01

标签: jquery ajax

我试图返回一个变量,我真的不明白该怎么做。这是

jquery part $('a[href="if_blog"]').click( function( e ) {
        e.preventDefault(); 

        var bblog = $( this ).attr('href');
        var dataString = 'bblog=' + bblog;

        $.ajax({
            type: 'POST',
            url: '', 
            data: dataString, 
            success: function(data){

            $('#php').html(data);
        }
        });
    });

this is the php part and it is part of a big wordpress file:
$byzmo_blog = $_POST['bblog'];
switch ($byzmo_blog) {
    case 'if_blog':
        $byzmo_postype = 'if_posts';
        break;
    case 'food_mood_blog':
        $byzmo_postype = 'food_mood';
        break;
    case 'look_good_blog':
        $byzmo_postype = 'look_good';
        break;
    case 'feel_good_blog':
        $byzmo_postype = 'feel_good';
        break;
}
?>

<div id="php"></div>
<?php var_dump($_POST);

$query = array(
    'post_type' => $byzmo_postype,
    'posts_per_page' => get_theme_option('blog_posts'),
    'orderby' => get_theme_option('blog_orderby'),
    'order' => get_theme_option('blog_order'),
    'paged' => ( get_query_var('paged') ? get_query_var('paged') : true )
);
?>

所以当我点击链接([href =“if_blog”]')我想根据$ _POST显示的内容加载一些内容,但bcs我在同一页面数据中加载整个index.php文件,因此它在页面中加载twise(因为我使用.html())然后它也加载到$ _POST ..如何只使用带有$ _POST的数据中的变量这个部分$ byzmo_blog = $ _POST ['bblog' ]。 ?

我希望你能理解我......

修改 好吧,我担心我没有得到它:所以我有index.file,就像这样:

<a href='if_blog'>The Link</a>

<?php
$post_type = $_POST['posttype'];

$query = array(
    'post_type' => $post_type,
    'posts_per_page' => get_theme_option('blog_posts')
);
?>

<?php query_posts( $query ); if ( have_posts() ) :  ?>

<?php while ( have_posts() ) : the_post(); endwhile; endif; ?>

因此,点击链接是由jquery文件提取的:

jQuery.noConflict();
jQuery( document ).ready( function( $ ) {
$('a[href="if_blog"]').click( function( e ) {


        var bblog = $( this ).attr('href'); 
        var url = 'test.php'; 

        $.post(url, { byzmo_blog: bblog },
            function(data) {
                    alert(data);
                    //console.log(data); //
        }); //, "json");
        e.preventDefault();
});

} );

返回text.php中的字符串,如果我应用json_encode,则返回一个对象。

现在从这一点开始我想将这些数据返回到index.html并使用它$ post_type = $ _POST ['posttype'];进一步..当我使用console.log时没有任何反应,我是否必须在这里使用json_decode?我搜索了很多但是现在却无法得到它......:/

1 个答案:

答案 0 :(得分:1)

使用$.post('url', '{data}', function(answer));代替。您可以从postJquery收集更多信息。 基本上,你有:

$.post("test.php", { name: "John", time: "2pm" },
   function(data) {
     alert("Data Loaded: " + data);
   });

在客户端站点中。 因此,在服务器端,将值检索为

$name = $_POST['name'];
$time = $_POST['time'];

您可以将json_decode($_POST['name'])用于JavaScript文字对象到PHP数组,并将其发送回页面使用json_encode($array);在您的示例中,您没有将POST提供给发送数据的位置。你肯定需要到POST到的地方的网址。