2013-09-25 155 views
0

我的PHP网页正在返回一个JSON字符串。我写了以下函数来获取这些数据并在jQuery移动列表视图中显示它们。从php页面获取JSON数据

function LoadJsonDataFunction() 
{ 
    $.getJSON("my_web_page.php", function(obj) { 
    $.each(obj, function(key, value){ 
     $("ul").append("<li>"+value.fname+"</li>"); 
    }); 
    }); 
} 

这里是我的列表视图代码:

<ul data-role=listview> </ul> 

我呼吁人们在身体标记功能

​​

,但是当我在执行程序显示“取消定义”,并没有数据。

然后我改变$ .getJSON()请求像这样,然后它的工作完美。

$.getJSON("some_page_returning_same_json_string.json",function(obj) { ..... 

让我知道我该如何解决这个问题。

PS。这是我的PHP页面输出..

{ 
    "employees":[ 
    { 
     "fname": "sdsdsd", 
     "lname": "sdsd", 
     "phone": "sdsd", 
     "gender": "female", 
     "dob": "1990-03-11", 
     "address": "03", 
     "nic": "erer", 
     "email": "erererer", 
     "empid": "ererere", 
     "designation": "sdsds", 
     "qualifications": "dsds" 
    } 
    ] 
} 

这里是我的PHP代码

<?php 
    header('Content-Type: application/json'); 
    /* 
    Following code will list all the employees 
    */ 

    // array for JSON response 
    $response = array(); 

    // include db connect class 
    require_once __DIR__ . '/db_connect.php'; 

    // connecting to db 
    $db = new DB_CONNECT(); 

    // get all employees from employees table 
    $result = mysql_query("SELECT * FROM emp_master") or die(mysql_error()); 

    // check for empty result 
    if (mysql_num_rows($result) > 0) { 
    // looping through all results 
    // employees node 
    $response["employees"] = array(); 

    while ($row = mysql_fetch_array($result)) { 
     // temp user array 
     $employee = array(); 
     $employee["fname"] = $row["fname"]; 
     $employee["lname"] = $row["lname"]; 
     $employee["phone"] = $row["phone"]; 
     $employee["gender"] = $row["gender"]; 
     $employee["dob"] = $row["dob"]; 
     $employee["address"] = $row["address"]; 
     $employee["nic"] = $row["nic"]; 
     $employee["email"] = $row["email"]; 
     $employee["empid"] = $row["empid"]; 
     $employee["designation"] = $row["designation"]; 
     $employee["qualifications"] = $row["qualifications"]; 

     //push single employee into final response array 
     array_push($response["employees"], $employee); 
    } 
    // success 
    // $response["success"] = 1; 
    // echoing JSON response 

    echo json_encode($response); 
    } else { 
    // no employees found 
    $response["success"] = 0; 
    $response["message"] = "No employees found"; 

    // echo no users JSON 
    echo json_encode($response); 
    } 
?> 
+0

你是如何返回来自PHP端的json数据...? –

+1

你是否从php返回json字符串和'json_encode/json_decode'? – Jai

+0

您是否试图在JavaScript中添加另一个foreach? –

回答

2

更改行的代码:

$.each(obj, function(key, value){ 

$.each(obj.employees, function(key, value){ 

“employees”包含在“obj”中,然后它包含数组。 “obj”不包含您正在查找的数组。

+1

非常感谢。现在它的运行..再次感谢你。 – san88

+0

@ user1511958不客气。 – Arfeen

3

你有没有写正确的头?如果不写本作中,你的PHP第一行:

header('Content-Type: application/json'); 
+0

yes..i在您的评论后添加了标题,但仍在列表中显示前一个“未定义”项目。 – san88

0

这是我用来开始JQM最好exemple,您可以检查链接或使用下面

$('#ListPage').bind('pageinit', function(event) { 
    $.getJSON('some_php_or_json_file_link', function(data) { 
     $('#listView li').remove(); 
     $.each(data.items, function(index, item) { 
      $('#listView').append('<li><span>' + item.json_label1 + '</span></li>'); 
     }); 
     $('#listView').listview('refresh'); 
    }); 
});