【问题标题】:Variable from jquery to PHP wordpress从 jquery 到 PHP wordpress 的变量
【发布时间】:2014-01-07 00:42:20
【问题描述】:

我在 Wordpress 中构建,我知道我需要使用 AJAX,但不知道如何使用。

我有一个下拉选择框,当用户选择一个选项时,会出现一个 div。

该 div 中的数据需要从自定义帖子中提取,因此我有一个 php 变量来执行此操作。

我需要做的是能够根据下拉菜单的选择来更改该 php 变量。

我可以在 jQuery 中做到这一点,但我不知道如何将 jQuery var 传输到 php。

任何帮助将不胜感激。

$(document).ready(function(){
$('select').change(function(){
    $( 'select option:selected').each(function(){
        if($(this).attr('value')=='choose'){
            hide_visible();
        }  

        var val = $('#course_select option:selected').val();

        var course_id;  

        if (val == 'CPR'){
            course_id = 106; <!--  I need to send this to php -->
            $( '#course_id' ).val(course_id); 
        };


        if($(this).attr('value') == val){
            if ($( '.course-info ' ).is(':visible')) {
                $( '.course-info' ).slideUp( 'slow' ).delay(700);
                $( '.iframe' ).slideUp( 'slow' );
                $( '.form' ).slideUp( 'slow' );
                $( '.'+ val ).slideDown( 'slow' );
            }else{
                $('.iframe').slideUp( 'slow' );
                $( '.course-info' ).slideUp( 'slow' );
                $( '.'+ val  ).slideDown( 'slow' );
            };
        }           
    });
}).change();

});

【问题讨论】:

  • 我们可以看一些代码示例吗?很难准确理解您在这里想要实现的目标......
  • 为什么不直接根据下拉菜单向服务器请求内容呢?
  • 如果菜单选择数量有限,为什么不预先填充所有 div 并使用 javascript/jQuery 显示与当前选择相关的选项?如果您不想弄乱 AJAX 并且可能不得不构建一个后端脚本来使用它,这是一种更直接的方法。
  • @Scopey 这是这个想法,除了内容之外的工作。如果您从下拉列表中选择 Anaphylaxis,它会显示它与内容的显示方式。 lindykulpa.com/ph/first-aid-training
  • @MikeBrant 我曾考虑过这一点,但有很多选项,模板将应用于几个不同的部分..

标签: javascript php jquery ajax wordpress


【解决方案1】:

从您编辑的问题中,您可以执行以下操作:

$('.result-element').load('my-page.php?courseid=' + courseId);

查看 api.jquery.com/load 以了解更多信息是使用 jQuery.load()。

您的 my-page.php 可以从 $_GET['courseid'] 获取“courseid”,您可以将原始 HTML 回显为“部分”,jQuery 会自动将其添加到“.result-element”元素中。

【讨论】:

  • 感谢您的帮助,我想我现在只是去 lofi 完成工作,然后可能会在以后重新审视我的宏伟计划。
【解决方案2】:

您不需要 PHP 变量。

在您的下拉列表的更改事件中,获取选定的值,然后构建您的 ajax 查询并将其发送到服务器。

查看以下jQuery函数:ajax()change()val()html()show()

您还需要为 jQuery 设置一个端点来请求数据。像http://domain.com/api/get-my-data 这样的东西。这是一个 wordpress 任务(即 PHP)。此端点/脚本应返回一个 JSON 编码的对象,其中包含您的 div 的内容。

【讨论】:

    【解决方案3】:

    也许这有助于您也使用 jquery。欢呼男人:)

    $(document).ready(function(){
    $('select').change(function(){
    $( 'select option:selected').each(function()
    {
        if($(this).attr('value')=='choose')
        {
            hide_visible();
        }  
    
        var val = $('#course_select option:selected').val();
    
        var course_id;  
    
        if (val == 'CPR')
         {
            course_id = 106; // Sample code where you can send your jquery variable to php page
            $.post("send_variable.php", {id:val}, function(data){
                    alert(data) //shouts the data from send_variable.php page    
                    $("#hiddenTextbox").val(data); //this passes the value from send_variable.php to a textbox with Id(hiddenTextbox) into the page 
            });
            $( '#course_id' ).val(course_id); 
         }
    
    
        if($(this).attr('value') == val)
        {
            if ($( '.course-info ' ).is(':visible')) 
            {
                $( '.course-info' ).slideUp( 'slow' ).delay(700);
                $( '.iframe' ).slideUp( 'slow' );
                $( '.form' ).slideUp( 'slow' );
                $( '.'+ val ).slideDown( 'slow' );
            }
            else
            {
                $('.iframe').slideUp( 'slow' );
                $( '.course-info' ).slideUp( 'slow' );
                $( '.'+ val  ).slideDown( 'slow' );
            }
        } 
     }
    
    });
    }).change();
    

    这里是 send_variable.php 的代码

     <?php
         $val1 = $_POST['id'];
         echo $val1; //thus returning the data that depends on your selected from dropdown
      ?>
    

    希望这会有所帮助:)

    【讨论】:

    • 你好,谢谢你的回复。由于这是在 wordpress 中,我应该把 send_variable.php 放在哪里?以及如何让 var 回到我的页面中使用?
    • 不幸的是,我对制作任何 wordpress 都不熟悉。有什么方法可以在那里添加另一个页面吗?如果是这样,那么您只需复制 send_variable.php 中的代码即可。您可以通过简单地制作一个隐藏的文本框来取回 var。请参阅上面的更新代码。
    • codex.wordpress.org/Pages#Page_Templates 通过 wordpress 创建页面不会创建任何新文件.... php 或其他文件。它只是存储在您的数据库中的信息。为了能够从您的页面中运行您的 php,您有几个选择。您可以按照我上面链接的指南制作新的页面模板。将其命名为 mynews.php 之类的名称并将其分配给您的新闻页面。新模板可能只是 page.php 的精确副本,带有适当的标题,并插入原始帖子中的代码
    • 如果你不想走那条路,有一些插件允许直接在帖子/页面中运行 php 代码wordpress.org/extend/plugins/exec-php 就是其中之一.....跨度>
    猜你喜欢
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 2016-05-17
    • 1970-01-01
    相关资源
    最近更新 更多