2012-12-20 73 views
0

您好使用JQuery來調用一個PHP腳本。 php腳本位於http://localhost:8080/getData.php,它訪問MySql數據庫。Ajax請求本地主機PHP使用JSONP不工作

我使用我的電腦上與本地主機的服務器地址的Tomcat服務器設置:8080

我已經看過了Ajax響應data.status,它是0

我看了一下跨域請求並知道如果我使用JSONp,這應該不成問題。

任何幫助將不勝感激。

我的HTML裏面jQuery的部分我用它來調用一個Ajax功能低於:

<script type="text/javascript"> 
$(document).ready(function() { 
    $.ajax({ 
     type:'GET', 
     url:'http://localhost/getData.php', 
     datatype:'jsonp', 
     timeout: 5000, 
     success: function(data){ 
      //data loaded 
      alert('loaded'); 

     }, 
     error: function(data){ 
      // error on loading data 
      alert('error');   
     } 
    }); 
}); 
</script> 

實際訪問getdata.php代碼如下:

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

$server = "127.0.0.1"; 
$username = "root"; 
$password = ""; 
$database = "deals"; 

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

$sql = "SELECT area_id, name AS area_name, sector AS area_sector FROM deals.areas ORDER BY name"; 
$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) . ');'; 
?> 

回答

4

我看到三個問題:

  1. 您的PHP腳本正在尋找名爲jsoncallback的GET參數,但這不是jQuery默認發送的名稱,即callback。要麼改變你的PHP使用callback代替:

    // Here ----v 
    echo $_GET['callback'] . '(' . json_encode($records) . ');'; 
    

    ...或者將此選項添加到您的ajax電話告訴jQuery來使用,而不是jsoncallback

    jsonp: "jsoncallback", 
    

    您可以使用網絡選項卡您瀏覽器的開發工具來檢查調用並查看查詢字符串的外觀,以確保它們匹配。

  2. 您的AJAX選項的錯字,你有datatype:'jsonp'代替dataType:'jsonp'(在dataTypeT須大寫),所以jQuery將不會一直在努力做一個JSON-P調用的話,那會嘗試XHR。

  3. 你已經在你的問題中說過PHP頁面在http://localhost:8080/getData.php,但你給出的是http://localhost/getData.php(沒有這個端口)。

+0

嗨T.J克勞德,我會盡力,當我今天晚些時候回家時,給一個去。我對此相當陌生,你有沒有做過類似於我正在做的事情?如果是這樣,你知道網絡上的任何鏈接/教程非常感謝您的答覆。 – user1907509

+0

@ user1907509:我不知道*特定的*,但網絡上並不缺少jQuery/JSON-P示例。 :-)我注意到你的電話有一些其他問題,並已更新答案,希望它有幫助。 –

+0

T.J Crowder我試過這個,並且已經能夠從php得到響應,但是響應只是php的實際源代碼,而不是預期的JSON數據。也許我在PHP方面做錯了什麼。 php腳本看起來是否正確? – user1907509