1

我的ajax调用有问题。当我尝试提醒结果时,它一直显示为未定义。

两个警报都导致未定义。我不太确定我是否正确编码,如果我是,请帮助我。

问:如果我访问不正确,我将如何访问技能属性/索引。

JQUERY/JSCRIPT

$(document).ready(function(){
    // Skill sort on change
    $('#order_by').on('change', function() {
        $.ajax({
            type: "POST",
            url: "sort_skill_be.php",
            dataType: "json",
            data: {skill:this.value}  
        }).done(function(result){
                alert(result[0].skill);
        })
    });
});

PHP FILE:此方法接收语句并将“对象”数组放置到整个数组中。

function helpFetchPostInfo($stmt){
    $results = $stmt->fetchAll();
    $recent_posts = array();
    foreach ($results as $row){
        $post = array(
            'username' => $row['username'],
            'steam' => $row['steam'],
            'skill' => $row['skill'],
            'description' => $row['description'],
            'date' => $row['date'],
        );
        array_push($recent_posts, $post);
    }
    return json_encode($recent_posts);
}

感谢您的帮助,非常感谢

function sortSkill($skill){
    // If All skill is selected display posts normally
    if ($skill == 'All'){
        displayPosts();
        exit;
    }
    $db = connect();
    $sql = "SELECT * FROM users LEFT JOIN posts 
            ON users.idUsers = posts.fkuser 
            WHERE posts.fkuser IS NOT NULL and users.skill=:skill
            ORDER BY date DESC";
    $stmt = $db->prepare($sql);
    $stmt->execute(array(':skill' => $skill));      
    if ($stmt->rowCount() == 0){
        // Nothing has returned
        unset($_SESSION['recent_posts']); // Reset session of posts if no posts appear.
    } 
    else
    {
        $recent_posts = helpFetchPostInfo($stmt);
        return $recent_posts;
    }
}

排序技能在名为 sort_skill_be.php 的单独 php 文件中被调用,该文件在选择更改时从 jquery 中调用。

<?php
session_start();
include 'database.php';
$skill_sort = $_POST['skill'];
sortSkill($skill_sort);
header('Location:index.php'); 
?>

编辑:将 JSON 数据类型添加到 jquery

现在我的问题是警报不再被调用。

4

1 回答 1

3

看起来您没有在方法中提供dataType属性。ajax

dataType: "json",

要么这样做,要么在访问它之前解析你的结果JSON

我没有看到您尝试访问对象的方式有任何问题。

于 2013-06-21T00:15:21.767 回答