JQueryを使用してAJAXをローカルサービスにしています。ローカルサービスはHttpHandler(例:Request.ashx)です。 Request.ashx内では、外部のウェブサイト(CallExternalWebsite()など)を呼び出す必要があります。 CallExternalWebsite()は、.NETのSystem.Net.WebRequest()を使用してリクエストを開始します。外部Webサイトにアクセスすると、成功イベントまたはエラーイベントのいずれも起動されません。 (注:私はまた、IISでホストされているこのWCFサービスを試してみました私は、同じ結果見ています。)ここでサービスを呼び出すときにAjax成功イベントが発生しない
は2つのシナリオです:
このシナリオでは動作します:のprocessRequestで
- を( )、コメントアウト callExternalWebsite()。
- オブジェクトoの場合、結果をシミュレートするデータで初期化します。
- myButtonをクリックしてください
- 成功イベントは、クライアント上で発生します。
- Fiddlerでは、ヘッダ情報を見ることができます。私は、このシナリオが動作しないなど
、JSONの結果を参照してください:のprocessRequestで
- は()、は callExternalWebsiteの呼び出しを()を有効にします。
- オブジェクトoの場合、callExternalWebsite()は適切なオブジェクトを返します。
- myButtonをクリック
- 成功イベントは、クライアントでが発生しません。
- Fiddlerでは、ヘッダ情報を見ることができます。私はJsonの結果などを参照してください。
- 私は私の携帯電話に結果を送信しているので、私はcallExternalWebsite()が動作していることを知っています。
これを要約すると、HttpHandler内の外部httpコールがAjaxの成功イベントを実行しています。ここで
は、AJAX呼び出しからの抜粋です: (私は別のinterationsをしようとしていた)のHttpHandler Request.ashxで
$(document).ready(function() {
$("#myButton").click(function (event) {
$.ajax({
cache: false,
type: "POST",
url: "http://localhost/Service/Request.ashx",
data: '{"id" : "053252f3"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
timeout: 20000,
success: function (msg) {
AjaxSucceeded(msg);
},
error: AjaxFailed
});
});
});
、
public Void ProcessRequest(httpContent context)
{
// Do some stuff....
// Make call to external web site
object o = callExternalWebsite (Uri, Data, "POST");
// Return results from callOtherWebsite
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
string json = javaScriptSerializer.Serialize(o);
context.Response.ContentType = "application/json";
context.Response.Write(json);
}
任意の考え?
ありがとうございました。
あなたがこれを行うとどうなりスティーブ
は、応答はHTTP 200/OKであるあなたは確かにいますか?私は、2xxのステータスコードだけが "Success"をconsiperedと信じています。 –
あなたは 'AjaxSucceeded'にコードを投稿できますか?おそらくそこに問題があるかもしれません。成功したブランチが実行されていないことを確認するには、 'alert(" hello! ")やそれに類するものに成功の呼び出しを変更してみてください。 –
私は成功しました: 'success:function(msg){alert(" hello "); } ' でも、まだ実行されませんでした。 Request.ashxコールからの応答を返します。 'HTTP/1.1 200 OK Cache-Control:private Content-Type:application/json; 0xX-AspNet-Version:4.0.30319 X-Powered-By:ASP.NET 日時:2012年4月13日(金)16:28:40 GMT Content-長さ:84' すべてうまく見えます。 – Steve