【发布时间】:2015-08-30 20:18:20
【问题描述】:
我一直在寻找解决我的问题的方法。我正在为我的问题找到很多答案,但无法弄清楚。 这是我的问题: 我正在尝试将 json 文件发送到另一个域(它是一家外部公司,为合作公司提供 Web API),它应该给我发回一些 json(我正在使用 MVC WebApps),而不使用控制器...... 首先,我遇到了跨域问题,我试图通过编辑 Web.config 来解决这个问题(见上文)。
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
这没有帮助。使用jsonp后(见我下面的jc代码),这个问题就解决了。但现在我得到 “请求的资源不支持 HTTP 方法 'GET'” - Errormsg。
<script>
$("#getprice").click(function () {
$.support.cors = true;
$.ajax({
type: "POST",
asnc: false,
Accept: "application/json",
contentType: "application/json",
dataType: "jsonp",
jsonpCallback: 'localJsonpCallback',
url: "otherdomain.com" + "?callback=?",
data: {
models: [{
toolID: "",
modelReference: "some model.xml",
materialID: $("#materialID").val(),
finishID: $("#finishID").val(),
quantity: $("#quantity").val(),
xDimMm: $("#xDimMm").val(),
yDimMm: $("#yDimMm").val(),
zDimMm: $("#zDimMm").val(),
volumeCm3: $("#volumeCm3").val(),
surfaceCm2: $("#volumeCm3").val()
}],
shipmentInfo: [{
countryCode: $("#countryCode").val(),
stateCode: "",
city: $("#city").val(),
zipCode: $("#zipCode").val()
}],
currency: $("#currency").val()
},
xhrFields: {
withCredentials: true
},
crossDomain: true
})
})
function localJsonpCallback(json) {
if (!json.error) {
alert("läuft");
console.log(json);
} else {
alert(json.Message);
}
}
</script>
在寻找解决方案时,我只为您的控制器找到此 [HTTPPOST] 信息。但我的问题在这里,我不使用控制器作为缓冲区。我直接将数据从我的视图发送到服务器并返回。
【问题讨论】:
-
你能显示你发布到的
Action方法吗? -
正如我所解释的,我没有响应控制器中的操作方法。这是我的问题吗?我想将信息直接发送回“解决方案”文本框中的 html 表单文件。所以在这种情况下,我的 localJsonpCallback 函数应该将信息发送到 html id 标签
-
试试
otherdomain.com没有?callback=?作为你的网址 -
我试过有无
标签: javascript c# jquery json model-view-controller