2

JSONP プラグインを使用して JSONP 呼び出しのエラーを適切に処理する HTML ページがあります。私の問題は非常に複雑です (そして、単純で簡単な "D'Oh!" ソリューションがあることを願っています :))。.js ファイルが HTML ページと同じディレクトリにあり、次のように読み込まれる場合:

<script type="text/javascript" src="jquery.jsonp.min.js"></script>

すべてうまくいきます。しかし、他のすべての JS ファイルがある内部 JS ディレクトリに移動すると、次のようになります。

<script type="text/javascript" src="js/jquery.jsonp.min.js"></script>

常にエラー関数を呼び出します。FireBug でトレースしたところ、$.jsonp関数を呼び出しますが、すぐにエラー関数にジャンプします。コード自体は次のようになります。

$.jsonp(
  {
    url: ipUrl, 
    timeout: 30000,
    success: displayData,
    error: displayError
  }
);

何か案は?本当は整理整頓して発送したいのですが。御時間ありがとうございます。

いくつかの事実: ページはローカルでテストされています (Web サーバーなし)。権限やセキュリティの問題はありません。同じディレクトリに、適切にロードされる他の .js ファイルがあります。エラーはすべてのブラウザで発生します。

更新: アレックスの提案に基づいて、縮小されていないバージョンをダウンロードし、js ディレクトリに配置しました。HTML ページの参照を変更し、FireBug でトレースしました。関数は正しい URL を受け取り、実際に機能します。
非縮小版と縮小版を行ったり来たりしましたが、結果は明らかです。縮小版では何かがおかしくなっています!
それでも、その場所が重要な意味で機能を台無しにするものは何だろうか? 縮小されていないバージョンを出荷して、それを忘れるべきですか?

更新 2 - 解決策: 開いているファイルを自分で縮小し (Alex のリンクを使用して JSMin の C# コードを取得しました)、ファイルをコンパイルして最小化しましたが、機能しました。次に、ダウンロードしたファイルと比較しました。改行がねじ込まれていました。ファイルを再度ダウンロードしました-すべてが機能します。

4

2 に答える 2

2

推測ですが、ipUrl がページに対してもローカルである場合 (テスト用)、スクリプトが別のディレクトリから追加されたときに、その場所に対して相対的に存在しないローカル ファイルをヒットしようとしている可能性があります。それはすぐにエラー関数をスローします。

縮小されていないバージョンのスクリプトを使用してデバッグし、ヒットしようとしている URL を確認できますか?

于 2009-10-20T16:42:12.313 に答える
0

を明示的に設定しようとしましたcallbackParameterか?

$.jsonp({
    url: ipUrl, 
    callbackParameter: 'nameOfTheCallbackParameterThatYourServerSideScriptExpects',
    timeout: 30000,
    success: displayData,
    error: displayError
});
于 2009-10-20T16:42:55.370 に答える