1

そのため、jQuery AJAX リクエストを介して Web ページに店舗のリストを追加しています。この小さなユーティリティは動的ではなく、データベース駆動型です。jQuery/AJAX を使用してデータを転送することにしました。現在の PHP CMS に PHP を埋め込もうとすると、多数の競合するエラーが発生するためです。

私が抱えている問題は、PHP スクリプトにリクエストを送信しようとすると jQuery AJAX エラーが発生することです。その理由はわかりません。

ここに私のAJAXリクエストがあります

$(document).ready(function(){
    $.ajax({
        type:"POST",
        url:"getStores.php",
        dataType: "json",
        success:function(data){
            results(data);
        },
        error: function(data) {
            console.log(data.error);    
        }
    });
});

私が得ている不可解なコンソールエラーはこれです

function (){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this} 

これが役立つ場合、私のPHPコードは次のとおりです。

//database connection
$return_arr = array();
$sql = mysql_query("SELECT * FROM where_to_buy");
while($row = mysql_fetch_array($sql, MYSQL_ASSOC))
{  
    $row_array['store_name'] = $row['store_name'];
    $row_array['store_url'] = $row['store_url'];
    array_push($return_arr,$row_array);
}
echo json_encode($return_arr);

JSONを配列にラップしているため、問題が発生している可能性があると思いますか?

編集:: 要求に応じて php スクリプトからの JSON 出力

[{"store_name":"Example 1","store_url":"http:\/\/www.example1.com"},{"store_name":"Example 2","store_url":"http:\/\/www.example2.com"}]

助けてくれてありがとう!

4

1 に答える 1

2

奇妙なエラー メッセージが表示される理由は、jQuery ajax 関数のエラー コールバックが 1 つではなく 3 つの引数を取るためです

最初の引数は、jQuery 固有の XMLHttpRequest オブジェクトでありerror、コンソールに記録されている関数を含むというプロパティが呼び出されます。ajax 呼び出しの実行中に発生した実際のエラーは、3 番目の引数としてエラー コールバックに渡されます。

それを見るには、次のようにする必要があります。

$(document).ready(function(){
    $.ajax({
        type:"POST",
        url:"getStores.php",
        dataType: "json",
        success:function(data){
            results(data);
        },
        error: function(jqXHR, text, error) {
            console.log(error);    
        }
    });
});

そうすることで、本当の問題に近づくことができます。

アップデート:

php スクリプトからの出力を表示してください。有効なjsonを返していない可能性があります。PHP ドキュメント ( http://php.net/manual/en/function.json-encode.php ) に記載されているように、[json_encode] only works with UTF-8 encoded data.

json_last_error( http://php.net/manual/en/function.json-last-error.php ) にチェックインして、何らかの理由でエンコードが失敗したかどうかを確認することもできます。

更新 3:

問題はphpスクリプトへのパスにあるようです。

試してみてください:

$(document).ready(function(){
    $.ajax({
        type:"POST",
        url:"/getStores.php", // <-- notice the leading slash!!!
        //dataType: "json",
        success:function(data){
            //results(data);
            console.log(data);
        },
        error: function(jqXHR, text, error) {
            console.log(error);    
        }
    });
});

または、上記が正しいjson出力をコンソールに記録する場合、すべてを元に戻します...

$(document).ready(function(){
    $.ajax({
        type:"POST",
        url:"/getStores.php",
        dataType: "json",
        success:function(data){
            results(data);
        },
        error: function(jqXHR, text, error) {
            console.log(error);    
        }
    });
});
于 2012-12-13T14:33:55.357 に答える