2012-01-19 31 views
5

Khi tôi cố gắng hiển thị dữ liệu với getJSON không có gì xảy ra, $('#child-left-container-2') sẽ hiển thị dữ liệu từ tệp php. Tôi đã sai ở đâu? ... Dưới đây là ví dụ ngắn về mã của tôi.getJSON với jquery

tập tin 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

Hãy thử 'console.log() 'trên' dữ liệu' đối tượng để xem nếu nó là chèn dom hoặc json nhận được rằng đang có vấn đề –

+1

kiểm tra trong bảng điều khiển firebug lỗi ... – Rafay

+1

Nó có nghĩa bạn có lỗi trong tập lệnh PHP và bạn không nhận được phản hồi JSON. –

Trả lời

0

Trong dòng thứ hai của jQuery của bạn

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

bạn đang cố gắng truy cập vào các thuộc tính id của một mảng của các đối tượng jQuery (số siblings()). Bạn cần phải xác định một đối tượng jQuery để có được id cho $getJSON chức năng của bạn

Cập nhật Nếu chỉ có một người anh em, chỉ định này bằng cách làm

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

chỉ có một anh chị em. – user892134

0

Tôi không có ý xúc phạm bạn ở tất cả nhưng những gì bạn đang làm là thực hành không tốt. Nếu bạn tạo HTML từ phía máy khách, bạn có thể có các yêu cầu ngắn hơn. Ngoài ra, nếu bạn sử dụng firebug, bạn có thể thấy biểu đồ JSON đầu ra của mình. Nó thực sự là một tính năng tiện lợi. Bạn cũng có thể kiểm tra xem nó có được lưu dưới phần DOM trong Firebug hay không. Chúc may mắn.

+0

Không xúc phạm! Bạn đúng! nó có thể được xem trong giao diện điều khiển nhưng như tôi đã nói lúc bắt đầu câu trả lời (đây là giải pháp của tôi) và nó hoạt động tốt cho tôi. Tôi sử dụng điều này vì ứng dụng của tôi nằm trong dự án XCODE, vì vậy không có bảng điều khiển cho ứng dụng gốc và tất cả dữ liệu JSON của tôi được tạo cũng được xem trên ứng dụng. Tôi rất chú ý đến JSON được tạo và tôi khuyên tất cả để làm điều đó. Và thực hành tồi tệ này rất đáng tin cậy! – aki

0

trước khi bạn đặt câu trả lời để html yếu tố với để gỡ lỗi nó với console.log,

tôi không thấy bạn đã tạo một div để response = $('#child-left-container-2') kiểm tra nếu bạn có

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

và kiểm tra xem bạn hưởng ứng , maby the json in under array ... try console.log(data) và mở debbuger với F12

1

Tôi không biết nếu điều này sẽ giải quyết được vấn đề bạn đang gặp phải nhưng điều này sẽ b e làm thế nào tôi sẽ giải quyết vấn đề cụ thể này. Hãy thử mã này, nếu nó hoạt động, dừng việc gửi html qua json sẽ là tiền thưởng.

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

Tôi thú nhận rằng không biết những gì $ phong cách hoặc làm thế nào nó sẽ xuất hiện render Tôi không thể thêm nó vào chuỗi. Nếu bạn đăng nội dung của $ style tôi có thể cập nhật anwser. Tôi hy vọng điều này sẽ hữu ích.

+0

người hỏi phải thử điều này. – VKGS

0

Tại sao bạn không đơn giản lặp lại HTML trong tệp PHP và sau đó điền vào vùng chứa với nó?

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

Vâng đây là giải pháp của tôi và làm việc hoàn hảo:

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

Và đây là cách bạn điền một danh sách trên jQuery Mobile với dữ liệu JSON được tạo bởi một tệp php. Bạn có thể điều chỉnh loại tập lệnh này cho mọi trình thông dịch JSON trong mã jQuery của bạn, ngay cả với các thông số (id, danh mục, v.v.)!

Hy vọng nó sẽ giúp cách này hay cách khác!

0

cố gắng đặt chú thích này trước echo json_encode($array);. Cuối cùng, hãy thực hiện cuộc gọi thoát để tránh thêm đầu ra.

header('Content-type:application/json;charset=utf-8'); 
echo json_encode($array); 
exit(); 
Các vấn đề liên quan