我已经通过线程读完了这里和其他地方的线程,试图让跨域ajax调用工作。我有一个Restful WCF服务,返回一个简单的bool。我使用正确的响应格式(Json)和带回调参数的预期url进行设置:
[WebGet(RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "ShowCreditCardTextJQUERY?memberNumber={memberNumber}&callback={callback}",
BodyStyle = WebMessageBodyStyle.WrappedRequest)]
我的Ajax看起来像这样:
$.ajax({
url: "http://example.com/service/service.svc/ShowTextJQUERY",
type: "GET",
contentType: "application/json; charset=utf-8",
dataType: "jsonp",
crossDomain:true,
data: "{'memberNumber':'" + memberNumber + "'}",
cache: false,
//success: alert(memberNumber),
success: function (data) {
var output = data;
if (!data) {
$("#dialog").dialog(
{
modal: true,
width: 735,
height: 550
});
}
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
}
});
我收到200响应,但这是在错误块中。我很茫然(对jquery / ajax来说还是很新的)。任何帮助将不胜感激。
答案 0 :(得分:0)
可能是这些代码行解决了您的问题,这适用于常规的Web服务调用
var jsonData = [YOUR JSON PARAMETER];
$.ajax({
async: false,
type: "POST",
url: [YOUR WEB SERVICE URL],
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ json: jsonData }),
dataType: "json",
success: OnSuccess,
failure: function(err) {
alert("Error : " + err.d);
}
});
function OnSuccess(data) {
alert("Success:" + data.d);
}
你可以做一件事,只需要设置Access-Control-Allow-Origin& CustomeHeaders中的Access-Control-Allow-Header是您的Web服务web.config文件。
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
如果您只想允许特定域,则可以使用域的特定值而不是*值
来实现