2013-03-17 3 views
0
function start(){ 

$('#detailsPage').live('pageshow', function(event) { 
    var user_name = getUrlVars()["user_name"]; 
    //var user_name = "studentB"; 
    $.getJSON('http://mydomain.com/getStudent.php?user_name='+user_name+'&jsoncallback=?', displayStudent); 
}); 
} 

выше является JS и ниже РНРГде должен находиться jsoncallback?

<?php 

header("Cache-Control: no-cache, must-revalidate"); 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); 
header("Content-type: application/json"); 

include('mysqlConfig.php'); 

$user_name = $_GET["user_name"]; 

$sql="SELECT * FROM tbl_user WHERE user_name='$user_name'"; 
$result=mysql_query($sql); 


$rows = array(); 

//retrieve and print every record 
while($r = mysql_fetch_assoc($result)){ 
    // $rows[] = $r; has the same effect, without the superfluous data attribute 
    $rows[] = array('data' => $r); 
} 

// now all the rows have been fetched, it can be encoded 
//echo json_encode($rows); 

$data = json_encode($rows); 
echo $_GET['jsoncallback'] . '(' . $data . ');'; 
?> 

я интересно, если этот метод работы или нет? в моем приложении n-й дисплей. я не уверен, ошибочно ли реализовано значение jsoncallback. ваше мнение будет большой помощью. благодаря

+0

Вы используя [** устаревший ** API баз данных] (http://stackoverflow.com/q/12859942/19068) и должен использовать [современную замену] (http://php.net/manual/en/mysqlinfo.api .choosing.php). Вы также уязвимы для [SQL-инъекций] (http://bobby-tables.com/) **, что современный API упростит [защиту] (http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php). – Quentin

+0

Правильный тип содержимого для JSON-P - это 'application/javascript', JSON-P - это вызов функции JavaScript, а не формат данных. – Quentin

+0

им путать то, что вы спрашиваете. пытаясь «jsoncallback» на «displayStudent»? – VeXii

ответ

0

Функция обратного вызова должна принимать три параметра:

данные, textStatus, jqXHR

Где данные, что возвращается на страницу PHP.

Так что ваши JS должны быть:

function start(){ 

    $('#detailsPage').live('pageshow', function(event) { 
     var user_name = getUrlVars()["user_name"]; 
     //var user_name = "studentB"; 
     $.getJSON('http://mydomain.com/getStudent.php?user_name='+user_name, displayStudent); 
    }); 
} 

function displayStudent (data, textStatus, jqXHR) { 
    // data will be the json encoded $rows data from your php file 
    // ... do stuff here 
} 

вы PHP, я думаю (я не использовал PHP в 12 лет ...), просто должна быть:

<?php 

header("Cache-Control: no-cache, must-revalidate"); 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");  
header("Content-type: application/json"); 

include('mysqlConfig.php'); 

$user_name = $_GET["user_name"]; 

$sql="SELECT * FROM tbl_user WHERE user_name='$user_name'"; 
$result=mysql_query($sql); 


$rows = array(); 

//retrieve and print every record 
while($r = mysql_fetch_assoc($result)){ 
    // $rows[] = $r; has the same effect, without the superfluous data attribute 
    $rows[] = array('data' => $r); 
} 

// now all the rows have been fetched, it can be encoded 

echo json_encode($rows); 
?> 
+0

в моем предыдущем вопросе, из-за некоторой проблемы с перекрестным доменом, я думаю добавить jsoncallback, чтобы исправить это. так что мне интересно, я должен удалить его? http://stackoverflow.com/questions/15463296/how-to-display-json-content-in-li-format-in-phonegap – HUNG

Смежные вопросы