【问题标题】:Wordpress ajax function parameter not workingWordpress ajax 函数参数不起作用
【发布时间】:2017-01-20 11:14:48
【问题描述】:

我正在使用 wordpress ajax 和以下代码未将参数值 metakey: id 传递给 $_POST["metakey"]。所以var_dump($_POST) 显示array(0) { }

如果我在 PHP 函数 $key=<any meta key> 中输入变量的静态值,那么它可以正常工作

jQuery(".selectbox").change(function(){
     var id = this.id;

     // do a POST ajax call
    $.ajax({
      type: "POST",
      url: '<?php echo admin_url('admin-ajax.php'); ?>',
      data: ({
        action: "get-mata-value",        
        metakey: id
      }),
      success:  function( response ) {     
                jQuery.each(response ,function(index,value){
                    jQuery('#' +id).append('<option value="'+value+'">'+value+'</option>');
                });
 }
    });




});

PHP:

add_action("wp_ajax_get-mata-value", "get_mata_value");
add_action("wp_ajax_nopriv_get-mata-value", "get_mata_value");
function get_mata_value()
{   
    global $wpdb;
$key=$_POST["metakey"];
    $result=
 $wpdb->get_col( $wpdb->prepare( 
    "
    SELECT      DISTINCT meta_value
    FROM        $wpdb->postmeta 
    WHERE       meta_key = %s               
    ",
    $key
) ); 
 return($result);

    exit();

}

【问题讨论】:

  • 首先,在浏览器开发工具网络面板中检查,发送了哪些参数,看看问题是客户端还是服务器端。看起来你在这里打开了一个 SQL 注入漏洞。
  • 你的 php 代码执行了吗?你在“get_mata_value”中的反应也是错误的,你应该是returning,而你应该是echoing。在return+ 后面加上exit 没有任何意义
  • @yivi PHP 代码在我在查询中使用静态值时工作
  • @CBroe 没有列出名为 metakey 的参数
  • 非常抱歉,您的代码错误。对 ajax 函数的响应应该是“回声”,因此您实际上会输出一些东西。如果你 return 值,它永远不会到达你的 JS 代码。最重要的是:你的 PHP 被执行了吗?如果是这样,请发布(在您的问题中)vardump($_POST); 的输出

标签: javascript php jquery ajax wordpress


【解决方案1】:

你试过了吗?

data: (JSON.stringify({
    action: "get-mata-value",        
    metakey: id
})),

【讨论】:

    猜你喜欢
    • 2016-10-27
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多