JQuery를 사용하여 AJAX를 로컬 서비스로 만듭니다. 내 로컬 서비스는 HttpHandler입니다 (예 : Request.ashx). Request.ashx에서 외부 웹 사이트 (예 : CallExternalWebsite())에 전화를 거는 것이 담당합니다. CallExternalWebsite()는 .NET의 System.Net.WebRequest()를 사용하여 요청을 시작합니다. 외부 웹 사이트에 액세스하면 성공 또는 오류 이벤트가 실행되지 않습니다. (참고 : 나는 또한 IIS에서 호스팅이 WCF 서비스를 시도 나는 같은 결과보고하고있다.) 여기Ajax 서비스 호출시 성공 이벤트가 발생하지 않습니다.
두 가지 시나리오입니다 :
이 시나리오가 작동 :이 ProcessRequest에서
- 을 (), 은입니다. callExternalWebsite().
- 개체의 경우 데이터를 사용하여 결과를 시뮬레이트합니다.
- myButton을 클릭하십시오.
- 클라이언트에서 success 이벤트가 발생합니다.
- Fiddler에서 헤더 정보를 볼 수 있습니다. 나는이 시나리오가 작동하지 않는 등
, JSON 결과를 참조하십시오이 ProcessRequest에서
- 는(), 는 callExternalWebsite의 전화를() 할 수 있습니다.
- 개체 o의 경우 callExternalWebsite()는 적절한 개체를 반환합니다.
- myButton을 클릭하십시오.
- 성공 이벤트 은 클라이언트에서이 실행되지 않습니다.
- Fiddler에서 헤더 정보를 볼 수 있습니다.
- 나는 내 전화로 결과를 보내고 있기 때문에 callExternalWebsite()가 작동하는 것을 알고 있습니다.
요약하면 HttpHandler 내의 외부 http 호출은 Ajax 성공 이벤트를 수행합니다. ,
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);
}
어떤 생각 (내가하려고했던 다른 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
});
});
});
: 여기
는 AJAX 호출에서 조각인가?감사합니다. 당신이 msg.d 대, MSG를 이렇게하면 어떻게됩니까
스티브
당신은 응답이 OK/HTTP 200 하시겠습니까? 2xx의 상태 코드 만 "성공"이라고 생각합니다. –
'AjaxSucceeded'에 코드를 게시 할 수 있습니까? 어쩌면 거기에 문제가있을 수 있습니다. success 호출을'alert ("hello!")'또는 비슷하게 변경하여 성공 분기가 실행 중이 아닌지 확인해보십시오. –
나는 성공을 다음과 같이 변경했다 : 'success : function (msg) {alert ("hello"); }' 하지만 여전히 실행되지 않았습니다. 다음은 Request.ashx 호출의 응답입니다. HTTP/1.1 200 OK 캐시 제어 : 개인 콘텐츠 유형 : application/json; ASP.NET 날짜 : 2012 년 4 월 13 일 금요일 16:28:40 GMT Content-Type : 0- 문자열 : 길이 : 84' 모든 게 잘된 것 같습니다. – Steve