0

こんにちは、Jquery を使用して PHP スクリプトを呼び出しています。php スクリプトは にありhttp://localhost:8080/getData.php、MySql データベースにアクセスします。

PCでTomcatサーバーのセットアップを使用しており、サーバーアドレスはlocalhost:8080です

ajax 応答 data.status を確認しましたが、0 です

クロス ドメイン リクエストについて読んだことがありますが、JSONp を使用している場合、これは問題にならないことを知っています。

どんな助けでも大歓迎です。

ajax関数を呼び出すために使用するHTML内のjquery部分は次のとおりです。

<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 に答える 1

4

次の 3 つの問題があります。

  1. PHP スクリプトは という GET パラメータを探していjsoncallbackますが、それは jQuery がデフォルトで送信する名前ではありませんcallbackcallback代わりに使用するように PHP を変更します。

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

    ...または、このオプションを呼び出しに追加して、代わりajaxに使用するように jQuery に指示します。jsoncallback

    jsonp: "jsoncallback",
    

    ブラウザーの開発ツールの [ネットワーク] タブを使用して、呼び出しを検査し、クエリ文字列がどのように見えるかを確認して、それらが一致していることを確認できます。

  2. ajaxオプションにタイプミスがあり、datatype:'jsonp'代わりにdataType:'jsonp'TindataTypeは大文字でなければなりません)あるため、jQueryはJSON-P呼び出しをまったく試行せず、XHRを試行しました.

  3. 質問で、PHP ページは にあると言いましhttp://localhost:8080/getData.phpたが、指定しurlた jQuery はhttp://localhost/getData.php(ポートなしで) です。

于 2012-12-20T08:39:55.997 に答える