首頁>Web>source

我有一个帶有選擇框的html表單,我想根据使用者的選擇顯示不同的資料。

我真正需要做的就是根据選擇更改php中的1个變數。

我进行了外部API呼叫,该API返迴資料並將其顯示在html表中.我想根据使用者的選擇更改api呼叫的一小部分(get uri中的id)。

有一種簡單的方法吗?

我已经做過jquery並用wordpress使其入队,並且在更改選擇框值時得到200响應.但是我似乎無法更改PHP。

為避免對代碼造成轰炸,我已更改了回撥函式,以使我可以举例.非常感谢任何反馈.谢谢。

HTML

   <form class="choose-site" action="" method="post">
      <select id="choose-site" name="site-choice">
        <option value="site1"><?php echo $primary_site ?></option>
        <option value="site2"><?php echo $site_2 ?></option>
      </select>
    </form>
<div id="test123">
    <p><?php echo $msg; ?></p>
    </div>

JQUERy

(function($) {
    $(document).ready(function() {
        
        $("#choose-site").on("change",function() {
            const val = this.value;
             if (val) {
                 $.ajax({
                    type : "post",
                    dataType : "JSON",
                    url: my_ajax_object.ajax_url,
                    data : { 
                        action: "my_ajax_action"
                },
                success: function(data) {
        $("#test123").html(data);
      }
            });
        }});
    });
})(jQuery);

Functions.php中的PHP

<?php
add_action( 'wp_ajax_my_ajax_action', 'users_details_callback' );
add_action( 'wp_ajax_nopriv_my_ajax_action', 'users_details_callback' );
function users_details_callback() {
 if (isset($_POST['site-choice']) && $_POST['site-choice'] == 'site1') {
$msg = "hi";
    
}
if (isset($_POST['site-choice']) && $_POST['site-choice'] == 'site2') {
$msg = "bye";
}
wp_die();
return $msg;
}
?>

是否可以更改$ msg的值並將其發送迴HTML?

最新回復
  • 9月前
    1 #

    Is there a way to change the value of 威兹威兹 並將其發送迴 HTML?

    您的代碼基本上已经在執行此操作,但是存在一些問题:

    您的AJAX JS( $msg )未發送名為 jQuery.ajax()的POST資料 到您的AJAX PHP回撥( site-choice ),它通過 users_details_callback()讀取資料

    您的AJAX PHP回撥將匯致wordPress迴顯零( $_POST['site-choice'] ),因為您要致電 0 返迴任何輸出之前,即使您在 wp_die()之前將其返迴 被稱為,您實際上應该 wp_die() 輸出而不是 echo 它。

    您的AJAX JS期望从服務器返迴JSON資料(因為您設置了 returndataTypeJSON ),因此您的AJAX PHP回撥應返迴有效的JSON响應。

    因此,要解決此問题:

    威兹威兹 威兹威兹 ),您可以使用 dataType : "JSON" 發送JSON响應而無需呼叫

      In your PHP function ( :(請註意,我還優化了 users_details_callback() 條件)

      wp_send_json_success()
      

      在你的飞天 (或 wp_die() )致電:

      if
      

      wy

      function users_details_callback() { if ( isset( $_POST['site-choice'] ) ) { $msg = ''; if ( $_POST['site-choice'] == 'site1' ) { $msg = 'hi'; } elseif ( $_POST['site-choice'] == 'site2' ) { $msg = 'bye'; } wp_send_json_success( $msg ); } // Send an error if we receive an invalid data. wp_send_json_error( 'your error' ); }

      jQuery.ajax()
      

      $.ajax()

      $.ajax( {
          ...
          data: {
              action: 'my_ajax_action',
              // Send the site-choice data.
              'site-choice': $( '#choose-site' ).val(),
          },
          success: function( data ) {
              // 'data' is now an object and the $msg value from the server is put in
              // data.data, so use that instead of just 'data'.
              $( '#test123' ).html( data.data );
          },
      } );
      
      Your form

  • wordpress:在wp-config-samplephp中找到迴車控製字元(^ M)
  • wordpress:如何更改帖子頁面上自定義列的預設排序順序?