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

php script echo displays in console instead of text inputs

本文关键字:文本 输入 echo 脚本 显示 控制台 php      更新时间:2023-09-26

我有这个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语句中硬编码一个值时,我会得到结果,但它们会显示在控制台中,而不是使用:

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的新手。

根据php的外观,_nonce应该在数据内部。您不能使用this.value,因为this是jQuery ajax函数本身,所以Try:

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中添加

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

之前

echo  json_encode( $result2 );

在js上,你应该而不是需要

JSON.parse(response)

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

response[0]

etc