2013-01-22 24 views
0

我無法使用此腳本在瀏覽器中顯示來自url的jSON數據,但我找不到錯誤的來源。使用jQuery無法在phonegap中檢索jSON值

的URL(http://www.entertainmentcocktail.com/cp/index.php)包含我的理解是有效的JSON數據,但沒有什麼回來,當我使用此代碼:

<script type="text/javascript" src="cordova-2.3.0.js"></script> 
    <script type="text/javascript" src="js/index.js"></script> 
    <script type="text/javascript" src="jquery/jquery.min.js"></script> 
     <script type="text/javascript"> 
       $(document).ready(function(){ 
        var output = $('#output'); 

        $.ajax({ 
         url: 'http://www.entertainmentcocktail.com/cp/index.php', 
         dataType: 'jsonp', 
         jsonp: 'jsoncallback', 
         timeout: 5000, 
         success: function(data, status){ 
          $.each(data, function(i,item){ 
           var name = '<h1>'+item.location+'</h1>' 
           + '<p>'+item.id+'</br>'; 

           output.append(name); 
          }); 
         }, 
         error: function(){ 
          output.text('There was an error loading the data.'); 
         } 
        }); 
       }); 
       </script> 

編輯:使用JSON數據的目標頁面生成從數據庫中使用此代碼的信息:

<?php 
header('Content-type: application/json'); 

$server = "SERVER"; 
$username = "USER"; 
$password = "PASS"; 
$database = "DB"; 

$con = mysql_connect($server, $username, $password) or die ("Could not connect: " . mysql_error()); 
mysql_select_db($database, $con); 

$sql = "SELECT id, name, location FROM table_name ORDER BY id"; 
$result = mysql_query($sql) or die ("Query error: " . mysql_error()); 

$records = array(); 

while($row = mysql_fetch_assoc($result)) { 
    $records[] = $row; 
} 

mysql_close($con); 

echo $_GET['jsoncallback'] . json_encode($records); 
?> 
+0

它看起來是最後一個';'打破了JSON解析器。嘗試刪除它。另外,不需要確定整個json字符串周圍的'()「。 – marekful

+0

您是否指''之前的';'?如果是這樣,我刪除它,沒有運氣 - 相同的結果。 – Ben

+0

當我獲取示例URL時,最後一個字符是';'。如果將該頁面的內容作爲JSON字符串傳遞,則由於最後一個字符而無效。 – marekful

回答

0

你是從同一域中運行這段代碼(www.entertainmentcocktail.com)?如果沒有,您可能會遇到XSRF問題。

你用什麼瀏覽器來測試?在Chrome中,如果出現Java腳本錯誤,您可以右鍵單擊並轉到「檢查元素」,然後在右下角有一個紅色標記。你應該可以在這裏找到更多的信息。

http://cl.ly/image/261T3T360M34 - 右下角的錯誤屏幕截圖。

你怎麼生成你的json字符串?理論上,應該使用內置的PHP函數: http://php.net/manual/en/function.json-encode.php

更新:

從您的意見,您的問題是排序,如果你的腳本。將其更改爲如下所示:

<script type="text/javascript" src="cordova-2.3.0.js"></script> 
<script type="text/javascript" src="js/index.js"></script> 
<script type="text/javascript" src="jquery/jquery.min.js"></script> 
    <script type="text/javascript"> 
      $(document).ready(function(){ 
       var output = $('#output'); 

       $.ajax({ 
        url: 'http://www.entertainmentcocktail.com/cp/index.php', 
        dataType: 'jsonp', 
        jsonp: 'jsoncallback', 
        timeout: 5000, 
        success: function(data, status){ 
         $.each(data, function(i,item){ 
          var name = '<h1>'+item.location+'</h1>' 
          + '<p>'+item.id+'</br>'; 

          output.append(name); 
         }); 
        }, 
        error: function(){ 
         output.text('There was an error loading the data.'); 
        } 
       }); 
      }); 
      </script> 
+0

不,我在本地運行它,並且是有一個錯誤 - 它說'未捕獲的ReferenceError:$未定義。 jSon字符串確實是通過PHP生成的。 – Ben

+0

嘗試將您的