短い質問:サーバーへのjsonpリクエストを作成し、リクエストをキャプチャしますが、javascriptとして解析しない方法はありますか? jQuery 1.5でdataType: "jsonp text"を使用していますが、動作しません。jsonpとしてリクエストを送信し、レスポンスをテキストとして解釈する、jQueryを使用する1.5
私はjsonpでAJAX経由でクロスドメインURLにアクセスしようとしています。問題は、他のドメイン(私の大学のディレクトリリスト)が非常に古く、サーバがjsonpをサポートしているかどうか疑問です。
- Firefoxでは、「XMLタグ名の不一致(METAが予想される)」というエラーが表示されます。クロムで、私は "Uncaught SyntaxError Unexpected token <"を取得し、両方とも私のAJAX要求に対応するファイルを指しています。エラーコールバックからのエラー文字列は "parsererror"です。
- 私は通常のAJAX呼び出しを行うことができません - データ型を単に "text"に変更するか、それをまとめて削除すると、他のドメインはユーザーが認証されず、ログインページにリダイレクトするすでにブラウザ側にログインしています。 dataTypeがjsonpの場合、これは起こりません。
- 私はサーバーがJSONPをサポートする必要があると知っていますが、そうは思いませんが、dataTypeをJSONPに変更すると、ChromeとFirefoxの両方で応答ページのリソースが表示されます。ブラウザへの応答(静的なHTML Webページ+いくつかのJavaスクリプト) - 取得したいデータが含まれています。
- 問題は、jQueryが応答をjavascriptとして解析しようとしていて、失敗していることです(javascriptではないため)。だからデータはブラウザで終わる - 私はそれにアクセスする必要がある!
- dataTypeを使用する: "jsonp text"は、jsonpリクエストを送信し、その応答をテキストとして解釈すると、違いはありませんが、解析エラーです。
私が欲しいのは、jsonpリクエストからの応答にプレーンテキストとしてアクセスする方法です。あるいは、失敗したjsonpリクエストから生の応答にアクセスできる場合、それも機能します。
ありがとうございます!
コード:
ajax_url = 'https://somesite/?searchTerm='+query+'&searchType=lastname';
var jqxhr = $.ajax({type:"GET",
url: ajax_url,
dataType:"jsonp text",
callback: "whatever",
success:function(responseData) {
$('div#content').text(responseData.slice(0, 100));
dbg(responseData.slice(0,100));
}})
.success(function() { alert("success"); })
.error(function(obj, errStr) { alert("error"); dbg("error: " + errStr + "test: " + test.responseText + this.responseTxt);})
.complete(function() { alert("complete"); });
js変数にアクセスしたデータを入れてから、jsタグで囲みましたか?それがjsとして解析しようとしているのであれば意味をなさないようです。 –