【问题标题】:Using AJAX to pass value from range slider to PHP on front-page of wordpress site使用 AJAX 将值从范围滑块传递到 wordpress 网站首页上的 PHP
【发布时间】:2021-01-08 18:31:43
【问题描述】:

所以我在整个网站的页脚中有一个范围滑块:

<input id="ex1" type="range" min="0" max="60" step="1" />

<div id='mydiv'>test</div>

在 slideStop 我重定向到我的主页:

$(document).ready(function(){

$('#ex1').on('change', function () {

if (document.location.href.indexOf('category') > -1)
    { 
window.location.href = 'http://localhost/wordpress/'; 
 }

var id = $(this).val();

$.ajax({
type: "post",
dataType: "json",
url: "/wp-admin/admin-ajax.php", 
data: {
    action:'get_data', 
    id: id
},

success:function(data) {
$('#mydiv').html(data);
}

});
});

});

我想将我的范围滑块的值传递到我的 wordpress 首页上的 php 中。这是代码:

<?php

$query = new WP_Query( array( 'tag' => ' ***INSERT RANGE SLIDER VALUE HERE*** ' ) );

if ( $query->have_posts() ) :

while ( $query->have_posts() ) : $query->the_post();?>

    <?php the_content();?>

<?php endwhile; endif;?>

因此,如果范围滑块在 44 处停止,主页将显示所有标记为“44”的帖子。

我以前没有使用过 AJAX,一直在努力理解从哪里开始。

谢谢!

【问题讨论】:

  • 问题在于您重定向到您的主页。您必须在主页 url 中传递一个变量以执行操作或更新表格,并在主页上放置一些代码来检查该表格数据。

标签: php html jquery ajax wordpress


【解决方案1】:

简单的方法是传递你的 var ass url 参数。在您的首页上,只需阅读此参数并将其设置为您的查询参数。您只需更改文件中的某些部分。

在这部分改变你的 js:

window.location.href = "http://localhost/wordpress?slider=12";

这里没有魔法,只需将任何参数添加到您的 url,在本例中:12。


在您的 php 文件中:

$slider   = $_GET['slider'];
$query    = new WP_Query( array( 'tag' => $slider ) );

只需我们为您的 url 提供一个 GET-Request - 参数(在本例中,我们使用“slider”)。

有什么问题吗?

【讨论】:

    【解决方案2】:

    试试这个代码 -

    $(document).ready(function(){
      $("#ex1").change(function() {  
        var field = $(this).val();
        $.ajax({
          url:"ajax-action-file.php",
          method:"POST",
          data:{value:field},
          success:function(data) {
            $('#Response-Div').html(data);
          }
      });
    });
    

    【讨论】:

    • 嘿,我刚刚将问题编辑为我正在尝试的最新代码,我可以使用上面的代码,谢谢!您如何建议在主页上将值召回到我的 php 中?
    【解决方案3】:

    这会将用户交互后滑块的当前值输出到一个div。

    HTML

     <input id='ex1' type='range' min='0' max='60' step='1'>
     <div id='mydiv'></div>
    

    JS (jQuery 3.4.1)

     $("#ex1").change(function() {  
     var id = $('#ex1').val();
     $.ajax({
     url:"myserverfile.php",
     method:"POST",
     data:{id:id},
     dataType:"text",
     success:function(data) {
     $('#mydiv').html(data);
     }
     });
     });
    
    • 我已经测试了这段代码。
    • 我没有在此处包含任何 PHP,因为我所做的只是通过 ['id'] 的 POST 索引回显滑块的值,但它证明通信是通过 AJAX 进行的。
    • 查看我的评论,了解主页重定向后如何处理。

    【讨论】:

    • 嘿,我正在努力让它工作,已经做了一些编辑(如下),但仍然没有工作。我应该在我的 functions.php 文件中做点什么吗?或者加入我的 admin-ajax.php 文件?还是应该自动执行此操作? $(document).ready(function(){ //! $('#ex1').on('change', function () { var id = $(this).val(); $.ajax({ type : "post", dataType: "json", url: "/wp-admin/admin-ajax.php", data: {id:id}, success:function(data) { $('.card-deck') .html(数据); } }); }); //! });
    • 已经发布了一个包含更多细节的新问题! stackoverflow.com/questions/64031254/…
    • @joehigh 我的 PHP 中的所有内容都是 echo $_POST['id'];因为 id 是发布到 PHP 文件的数据。你用的是什么版本的jQuery?
    • 我使用的是 3.5.1。所以在我的函数中,我现在有以下内容,但它仍然无法正常工作: function head_script(){?>
    • 从 3.4.1(我写的代码)到 3.5.1 有一些安全更新,所以这部分 - $('#mydiv').html(data); - 不起作用,特别是 .html 部分受到影响。我还没有升级,所以我不知道解决方法是什么,但这是def。问题。
    猜你喜欢
    • 1970-01-01
    • 2016-10-07
    • 2015-11-26
    • 2015-06-08
    • 1970-01-01
    • 2014-10-21
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多