php脚本echo在控制台而不是文本输入中显示

时间:2014-08-29 17:07:54

标签: javascript jquery ajax json wordpress

我有这个PHP脚本:

<?php
add_action('wp_ajax_nopriv_getuser', 'getuser');
add_action('wp_ajax_getuser', 'getuser');

 function getuser($str)
{
    global $wpdb;

    if(!wp_verify_nonce($_REQUEST['_nonce'], 'ajax-nonce'))
    {
            die('Not authorised!');
    }

    $myoption =  get_option( 'fixformdata_options' );
    $myoptionValue = maybe_unserialize( $myoption );    

    $result2 = $wpdb->get_row
    (
        $wpdb->prepare
        (
            "SELECT * FROM {$myoptionValue[tablename]} WHERE personeelsNummer = %s", 1
        )
    );

    if($result2) 
    {
        echo  json_encode( $result2 );
    }
}

这个javascript文件:

jQuery(document).ready(function($){
    jQuery('#input_1_2').change(function()
    {
        jQuery.ajax({
            type : 'post',
            dataType : 'json',
            _nonce : myAjax.ajaxurl,
            url : myAjax.ajaxurl,
            data : {action: 'getuser', value: this.value},
            succes: function(response){
                var parsed = JSON.parse(response);
                var arr = [];
                for(var x in parsed){ arr.push(parsed[x]);}
                jQuery('#input_1_3').val(arr[1]);
                jQuery('#input_1_4').val(arr[2]);
            }
        });

    });
});

脚本的目的:

当文本输入发生变化时,使用此文本输入的值在另一个文本输入中显示一些数据库数据。

现在我有两个问题:

  1. 我无法获取文本输入的值 getuser()
  2. 当我在sql语句中对值进行硬编码时,我得到结果,但它们显示在控制台中而不是使用:
  3. success: function(response){
                    var parsed = JSON.parse(response);
                    var arr = [];
                    for(var x in parsed){ arr.push(parsed[x]);}
                    jQuery('#input_1_3').val(arr[1]);
                    jQuery('#input_1_4').val(arr[2]);
                }
    

    我如何解决这个问题,我是Wordpress和Ajax的新手。

1 个答案:

答案 0 :(得分:1)

你的php _nonce的外观应该是内部数据。您无法使用this.value因为this是jQuery ajax函数本身所以请尝试:

jQuery('#input_1_2').change(function()
  $value = $(this).val();
  jQuery.ajax({
            type : 'post',
            dataType : 'json',
            url : myAjax.ajaxurl,
            data : {
                   action: 'getuser',
                   value: $value,
                   _nonce : myAjax.ajaxurl
                   },
            succes: function(response){
                var parsed = JSON.parse(response);
                var arr = [];
                for(var x in parsed){ arr.push(parsed[x]);}
                jQuery('#input_1_3').val(arr[1]);
                jQuery('#input_1_4').val(arr[2]);
            }
        });
     });

在php中,您会在

中找到value
$_POST['value'];

修改

在php add

header('content-type:application/json');

echo  json_encode( $result2 );

你应该,然后需要

JSON.parse(response)

你应该在数组中得到结果,即:

response[0]