2012-01-19 4 views
5

Когда я пытаюсь отобразить данные с помощью getJSON, ничего не происходит, $('#child-left-container-2') должен отображать данные из файла php. Где я ошибся? ... Ниже приведен краткий пример моего кода.getJSON с jquery

PHP файл

while($row = mysql_fetch_assoc($query)) { 

//code 

    $array[] = "<div class='array-container-2' $style id='$id' data-sid='$sid' data-user='$user'>$details1</div>"; 


      } 

      echo json_encode($array); 

JQuery

$(function() { 
    $('.next_button').click(function() { 

var id = $('#container').find('.graphic-blank:visible').siblings().attr('id'); 

     $.getJSON('fetchstack.php?id='+id,function(data) { 

      $('#child-left-container-2').html(''); //clear div 

      $.each(data,function(i,result) { 
       $('#child-left-container-2').append(result); 
      }); 
     }); 

      }); 
}); 
+1

Try 'console.log()' на 'data' объекта, чтобы увидеть, если это встраивание дома или получить JSON, что возникли проблемы –

+1

проверки в Firebug консоли ошибок ... – Rafay

+1

Это означает, у вас есть ошибка в вашем скрипте PHP, и вы не получаете ответ JSON. –

ответ

0

Во второй строке вашего JQuery

var id = $('#container').find('.graphic-blank:visible').siblings().attr('id'); 

вы пытаетесь получить доступ к идентификатор атрибута массива объектов JQuery (siblings()). Необходимо указать один объект JQuery, чтобы получить идентификатор для $getJSON функции

Update Если есть только один брат, укажите это, делая

var id = $('#container').find('.graphic-blank:visible').siblings().eq(0).attr('id'); 
+0

есть только один родной брат. – user892134

0

Я не хотел оскорбить вас на всех , но то, что вы делаете, - это плохая практика. Если вы создаете HTML с клиентской стороны, у вас могут быть более короткие запросы. Кроме того, если вы используете firebug, вы можете увидеть диаграмму вашего вывода JSON. Это действительно отличная функция. Вы также можете проверить, сохраняется ли его в разделе DOM в Firebug. Удачи.

+0

Не оскорблен! Ты прав! его можно просмотреть в консоли, но, как я сказал в начале ответа (это мое решение), и он работает хорошо для меня. Я использую это, потому что мое приложение находится внутри проекта XCODE, поэтому никакая консоль для собственного приложения и все мои данные JSON не были просмотрены в приложении. Я уделяю много внимания моему сгенерированному JSON, и я советую всем сделать это. И эта плохая практика очень надежна! – aki

0

, прежде чем установить ответ на HTML элементов с отлаживать его с console.log,

я не вижу, вы создали дела до response = $('#child-left-container-2') проверить, если у вас есть

<div id="child-left-container-2" /> 

и проверить вам ответ , maby json in under array ... попробуйте console.log(data) и открыть debbuger с F12

1

Я не знаю, решит ли это проблему, которую вы испытываете, но это будет b Как я решил эту конкретную проблему. Попробуйте этот код, если он работает, прекращение отправки html thru json будет бонусом.

$key = 0; 
while($row = mysql_fetch_assoc($query)) { 
    //code 
    $array[$key]['id']  = $id; 
    $array[$key]['sid']  = $sid; 
    $array[$key]['user'] = $user; 
    $array[$key]['content'] = $details1; 
    $array[$key]['style'] = $style; 
    $key++; 
} 

echo json_encode($array); 

JS:

$(function() { 
    $('.next_button').click(function() { 

     var id = $('#container').find('.graphic-blank:visible').siblings().attr('id'); 
     $.getJSON('fetchstack.php?id='+id,function(data) { 
      $('#child-left-container-2').html(''); //clear div 

      for (var i in data){ 
       var id  = data[i].id; 
       var sid  = data[i].sid; 
       var user = data[i].user; 
       var content = data[i].content; 
       var style = data[i].style; 
       $('#child-left-container-2').append($('<div />').addClass('array-container-2')attr('id', id) 
       .attr('data-sid', sid).attr('data-user', user).html(content); 
      }   
     }); 
    }); 
}); 

Признаюсь, не зная, что $ стиль или, как это будет казаться оказывается я не мог добавить его в цепи. Если вы публикуете содержимое стиля $, я могу обновить anwser. Надеюсь, это поможет.

+0

вопросник должен попробовать это. – VKGS

0

Почему вы просто не эхо HTML в PHP-файле, а затем заполняете его контейнером?

while($row = mysql_fetch_assoc($query)) { 
    echo "<div class='array-container-2' $style id='$id' data-sid='$sid' data-user='$user'>$details1</div>"; 
} 

$.getJSON('fetchstack.php?id='+id,function(data) { 
    $('#child-left-container-2').html(data); 
}); 
0

Ну это мое решение и работает безупречно:

PHP:

<?php 

ini_set('magic_quotes_gpc', false); 
header('Content-type: text/plain'); 

     //DB connection credentials 
$dbhost = 'hostname'; 
$dbuser = 'database_username'; 
$dbpass = 'database_password'; 
$dbname = 'database_name'; 

// allow cross-browser acces 
header('Access-Control-Allow-Origin: *'); 

// query SQL 
$sql = "do your DB query SELECT what ever here"; 

    //do our thingies withouth hacks (SQL Injection, etc) 
try { 
$dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); 
$dbh->query("set names utf8"); 
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$stmt = $dbh->query($sql); 
$json_export = $stmt->fetchAll(PDO::FETCH_OBJ); 
$dbh = null; 

    // return JSON format DATA 
echo '{"items":'. json_encode($json_export) .'}'; 
} catch(PDOException $e) { 

    // return error 
echo '{"error":{"text":'. $e->getMessage() .'}}'; 
} 

?> 

HTML ListView:

<div data-role="page" id="myPage"><div data-role="content" id="myContent"> 
     //my HTML list tag 
    <ul data-role="listview" id="myList"></ul> 
</div></div> 

JAVASCRIPT

//trigger script on show page 
$('#myPage').live('pageshow',function (event) { 
     //get our JSON data 
    $.getJSON('path_to_your_php_json_generator_file_declared_upper',function(data){ 
      //append our JSON data to a variable 
     var json_entries = data.items; 
       //for each JSON data, append it to our list as one element 
     $.each(json_entries,function(index,entry){ 
      $('#myList').append('<li><a href="#">' + entry.title + '</a></li>'); 
      //assuming we have a field named "title" in JSON data 
     }); 
      //refresh the list for layout (style) loading 
     $('#myList').listview('refresh'); 
    }); 
}); 

И вот как вы заполняете список на jQuery Mobile с данными JSON, сгенерированными файлом php. Вы можете адаптировать этот тип сценария к каждому интерпретатору JSON в коде jQuery, даже с параметрами (id, category и т. Д.)!

Надеюсь, это поможет так или иначе!

0

попробуйте поставить это juste перед echo json_encode($array);. В конце концов, вызывается вызов выхода, чтобы избежать дополнительного выхода.

header('Content-type:application/json;charset=utf-8'); 
echo json_encode($array); 
exit();