다음 웹 서비스가 있습니다.
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
그것은 클래스 데코레이터를 변경하지 않고 표준입니다.
이 jQuery 메소드가 있습니다.
var webMethod = "http://localhost:54473/Service1.asmx/HelloWorld";
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
data: "{}",
dataType: "json",
url: webMethod,
success: function(msg){ alert(msg.d); },
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
나중에 데이터를 게시해야하기 때문에 게시 작업입니다.
jQuery를 실행하면 “전송 없음”오류가 반환됩니다.
또한 언급해야 할 한 가지는 jQuery가 내 컴퓨터의 간단한 HTML 파일에 저장되어 있고 WebService도 내 컴퓨터에서 실행되고 있다는 것입니다.
HTML 페이지에는 코드가 없으며 단순히 웹 페이지이며 AC # 프로젝트 또는 아무것도 아닙니다.
누구든지 올바른 방향으로 나를 가리킬 수 있습니까?
답변
jQuery 페이지가로드되지 않은 http://localhost:54473
경우이 문제는 도메인 간 요청을하려고하기 때문일 수 있습니다.
업데이트 1 이 블로그 게시물을
살펴보십시오 .
업데이트 2
이것이 실제로 문제인 경우 (그리고 문제가 의심되는 경우) 솔루션으로 JSONP를 체크 아웃 할 수 있습니다. 시작하는 데 도움이되는 몇 가지 링크는 다음과 같습니다.
답변
이거 추가 해봐: jQuery.support.cors = true;
jQuery에서 크로스 사이트 스크립팅을 가능하게합니다 (1.4x 이후에 도입되었습니다).
우리는 정말 오래된 버전의 jQuery (1.3.2)를 사용하여 1.6.1로 교체했습니다. .ajax () 호출을 제외한 모든 것이 작동했습니다. 위의 줄을 추가하면 문제가 해결되었습니다.
답변
페이지에서 동일한 오류가 발생했으며 다음 줄을 추가했습니다.
<!--[if lte IE 9]>
<script type='text/javascript' src='//cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.3/jquery.xdomainrequest.min.js'></script>
<![endif]-->
IE9에서 더 이상 오류가 없습니다.
답변
제안 된 답변 중 어느 것도 나를 위해 완전히 효과가 없었습니다. 내 유스 케이스는 약간 다릅니다 (아약스는 IE9의 S3 .json 파일을 가져옵니다). 설정 jQuery.support.cors = true;
에서 No Transport
오류 가 제거 되었지만 여전히Permission denied
오류 발생했습니다.
나를 위해 일한 것은 IE9가 XDomainRequest 를 사용하도록 jQuery-ajaxTransport-XDomainRequest 를 사용하는 것이 었습니다. 이것을 사용하면 설정이 필요하지 않았습니다jQuery.support.cors = true;
답변
dataType = ‘json’대신 dataType = ‘jsonp’를 사용하여 해결합니다.
답변
나도이 문제를 겪었고 위에 제공된 모든 솔루션이 실패했거나 클라이언트 웹 서비스 제한으로 인해 적용 할 수 없었습니다.
이를 위해 클라이언트 서버에 상주하는 iframe을 페이지에 추가했습니다. 따라서 데이터를 iframe에 게시하면 iframe은 웹 서비스에 게시합니다. 따라서 도메인 간 참조가 제거됩니다.
승인 된 페이지 게시물 데이터 만 iframe과주고받을 수 있도록 양방향 원점 확인을 추가했습니다.
그것이 도움이되기를 바랍니다.
<iframe style="display:none;" id='receiver' name="receiver" src="https://iframe-address-at-client-server">
</iframe>
//send data to iframe
var hiddenFrame = document.getElementById('receiver').contentWindow;
hiddenFrame.postMessage(JSON.stringify(message), 'https://client-server-url');
//The iframe receives the data using the code:
window.onload = function () {
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
eventer(messageEvent, function (e) {
var origin = e.origin;
//if origin not in pre-defined list, break and return
var messageFromParent = JSON.parse(e.data);
var json = messageFromParent.data;
//send json to web service using AJAX
//return the response back to source
e.source.postMessage(JSON.stringify(aJAXResponse), e.origin);
}, false);
}
답변
저에게는 완전히 다른 이야기입니다.
이 페이지는 검색 엔진 순위가 양호하므로 여기에 내 사례와 솔루션을 추가해야합니다.
나는 jquery
나 자신을 지었다webpack
사용하는 모듈 만 골라서 . 단 하나의 단서로서 “전송 없음”메시지와 함께 아약스는 항상 실패합니다.
긴 디버깅 후 문제 XMLHttpRequest
는 플러그 인 가능jquery
기본적으로 포함되지 않는 .
jquery/src/ajax/xhr
브라우저에서 아약스가 작동하게하려면 파일 을 명시 적으로 포함시켜야 합니다.