【发布时间】:2014-02-12 16:25:45
【问题描述】:
我想从 javascript 调用网络服务。
这是我的代码:
var method="GetStock";
var url = "http://www.mywebsite.ro/ServiceGetStock.asmx";
$.ajax({
type: "POST",
url: url + "/GetStock",
data: "{variant_id='1'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccessCall,
error: OnErrorCall
});
function OnSuccessCall(response) {
alert(response.d);
}
function OnErrorCall(response) {
alert(response.status + " " + response.statusText);
}
我的 ServiceGetStock.asmx 代码:
[WebMethod]
public string GetStock(int variant_id)
{
try
{
ProductVariant variant = ProductVariantManager.GetProductVariantByID(variant_id);
return variant.Stock.ToString();
}
catch (Exception ex)
{
return ex.Message;
}
}
我收到错误消息:
POST http://www.mywebsite.ro/ServiceGetStock.asmx/GetStock 500(内部服务器错误)
[更新]
我忘了提到我在项目的webconfig中添加了(带有webservice),因为我得到了错误:
XMLHttpRequest 无法加载 http://www.mywebsite.ro/ServiceGetStock.asmx/HelloWorld。请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'http://localhost:11300' 因此不允许访问。
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
【问题讨论】:
-
你的
GetStock的方法签名是什么 -
使用 Fiddler (fiddler2.com) 模拟
POST请求(使用 Composer 选项卡)并查看您的回复 - 这将具体告诉您您实际收到的详细错误消息. -
500 是服务器端错误。您是否调试过服务器端代码?此外,
"{id='1'}"不是有效的 json,id!=variant_id。我想这很重要。 -
试试
{"variant_id":"1"} -
好的。我将 id 更改为 variant_id。这是我的错误。但我得到了同样的错误。
标签: javascript jquery asp.net web-services asmx