JSON对象值显示未定义

时间:2017-05-20 作者:abdul

我有以下PHP数组,我将其编码为JSON,如下面的代码片段所示:

$user_info = [
    "user_name"     => $current_user->user_login,
    "user_email"    => $current_user->user_email,
    "user_id"       => $current_user->ID,
    "user_comment"  => $message
];

json_encode( $user_info );
当我运行console.log() 编码的$user_info 变量,我得到下面的JSON:

{
  "user_name": "admin",
  "user_email": "[email protected]",
  "user_id": 1,
  "user_comment": ""
}
我现在的问题是,当我缩小到user_name 值,我得到一个未定义错误。

以下是我的方法:

// response is a declared variable which holds the encoded $user_info PHP array above
console.log( data.user_name );
下图是我的浏览器截图,显示了我的控制台。

Browser, showing both view and console

这里是我的PHP代码(用黄色圈起来,是关于我帖子的实际部分)。

PHP code (circled in yellow)

我的完整JavaScript代码如下:

$("#txt-cmt").keypress(function(e) {
  if (e.which == 13) {
    var comment = $(this).val();
    var message = {
      action: \'show_comment\',
      user_message: comment
    };
    $.post(ajaxUrl.url, message, function(data) {
      console.log(data.user_name);
    });
  }
});
我可能做错了什么,如何修复它以使代码按预期工作?

3 个回复
SO网友:Milo

您需要告诉jQuery您希望json 来自服务器的响应:

$("#txt-cmt").keypress(function(e) {
  if (e.which == 13) {
    var comment = $(this).val();
    var message = {
      action: \'show_comment\',
      user_message: comment
    };
    $.post(ajaxUrl.url, message, function(data) {
      console.log(data.user_name);
    }, \'json\');
  }
});
或者您需要将响应解析为jsonJSON.parse().

SO网友:Benoti

在这种情况下die(json_encode($user_info));, 我会的

echo json_encode($user_info);
wp_die();
试试看是否有区别。

SO网友:nyedidikeke

首先需要分析data 在你拿到user_name.

下面是一个带注释的片段,可供您浏览:

jQuery( document ).ready(function( $ ) {
    console.log( "ready!" );

    $( "#txt-cmt" ).keypress(function( e ) {
      if ( e.which == 13 ) {
        var comment = $( this ).val();
        var message = {
          action: \'show_comment\',
          user_message: comment
        };
        $.post(ajaxUrl.url, message, function( data ) {
        // Your data in it\'s raw form
        // Expected result: {"user_name": "admin", "user_email":"[email protected]", "user_id": 1,"user_comment": ""}
        console.log( "raw data" );
        console.log( data );

        // Here, declare a new variable to hold your parsed data
        // Expected result: a JSON object {user_name: "admin", user_email: "[email protected]", user_id: 1, user_comment: ""}
        var parseData = JSON.parse( data );
        console.log( "parse data" );
        console.log( parseData );

        // After that, you can get your user_name using either of the options below;
        // they both work

        // Option one
        // Expected result: admin
        console.log( "option one" );
        console.log( parseData.user_name );

        // Option two
        // Expected result: admin
        // console.log( "option two" );
        // console.log( parseData[\'user_name\'] );
        })

        .done(function( data ) {
          // What to do after the post is successful goes here
          console.log( "sort of a second success" );
        })

        .fail(function( data ) {
          // What to do only if an error occurred goes here
          console.log( "an error occurred" );
        })

        .always(function( data ) {
          // What to always do, whether the post was successful or an error occurred goes here
          console.log( "the post request has finished running, whether with a success or failure" );
        });
      }
    });
});

结束

相关推荐

403禁止的本地主机WAMP APACHE PHP

我对wordpress/网站设计完全陌生,我正在关注youtube上关于创建自定义主题的教程。我已经在localhost中建立了一个网站,我正在使用permalinks导航到网站中的页面。然而,当我尝试使用永久链接时,它会给我一个“403禁止”通知,并说“我没有权限访问此服务器上的永久链接”在网上调查之后,我的问题似乎是apache和php代码不允许permalink工作,我在网上找到了关于如何解决这一问题的视频,但这些视频都是多年前在apache httpd上发布的。conf文件代码已经更改,并且在ph