2013-06-21 4 views
1

У меня возникают проблемы с моим вызовом ajax. Когда я пытаюсь предупредить результат, он продолжает отображаться как Undefined.Мой объект ajax JSON распознается как «Undefined»

Оба предупреждения приводят к неопределенным. Я не уверен, правильно ли это кодирование, пожалуйста, помогите мне, если я есть.

В: Если я обращаюсь к нему неправильно, как именно я могу получить доступ к свойству/индексу навыка.

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; 
    } 
} 

Сортировать умение вызывается в отдельном файле PHP называется sort_skill_be.php, который вызывается из JQuery, когда выбор изменяется ,

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

EDIT: добавлен тип данных JSON в JQuery

Теперь моя проблема предупреждения не вызывается вообще больше.

+0

Показать код, где 'helpFetchPostInfo' называется –

+0

Итак, теперь покажите нам, где вызывается' sortSkill'? –

ответ

3

Похоже, вы не указали атрибут dataType в своем методе ajax.

dataType: "json", 

Либо это сделать или разобрать ваш результат к JSON перед доступом к ней.

Я не вижу проблемы, как вы пытаетесь получить доступ к объекту.

+0

Спасибо за помощь! Я сделал это изменение, и теперь я больше не получаю никакого предупреждения. hmmm, Также жаль, что я все еще новичок в этом ajax, что вы имеете в виду проанализировать свой результат JSON? – AustinT

+0

Проверьте свою консоль на наличие ошибок. 'Parse' означает преобразование ответа в строку JSON –

+0

Я не получаю никаких ошибок в консоли javascript. – AustinT