Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Javascript调用ASMX Web服务_Javascript_Jquery_Asp.net_Web Services_Asmx - Fatal编程技术网

从Javascript调用ASMX Web服务

从Javascript调用ASMX Web服务,javascript,jquery,asp.net,web-services,asmx,Javascript,Jquery,Asp.net,Web Services,Asmx,我想从javascript调用Web服务 这是我的代码: var method="GetStock"; var url = "http://www.mywebsite.ro/ServiceGetStock.asmx"; $.ajax({ type: "POST", url: url + "/GetStock", data: "{variant_id='1'}", contentType: "applicati

我想从javascript调用Web服务

这是我的代码:

    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 500(内部服务器错误)

[更新]

我忘了提到我在project的webconfig中添加了(使用webservice),因为我得到了错误:

无法加载XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“http://localhost:11300”


好的,伙计们。我发现了问题。创建ASMX文件时,必须读取所有注释行。要允许使用ASP.NET AJAX从脚本调用此Web服务,请取消注释以下行

 //[System.Web.Script.Services.ScriptService]
因此GetStock函数是:

  [WebMethod]
     [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string GetStock(string variant_id)
    {
        SendEmail.SendErrorMail("in"+ variant_id);

        try
        {

            ProductVariant variant = ProductVariantManager.GetProductVariantByID(Convert.ToInt32(variant_id));

            return variant.Stock.ToString();
        }
        catch (Exception ex)
        {
            return ex.Message;
        }
    }
Ajax代码是:

   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);
    }
问题解决了!感谢所有提示……

使用数据类型:“jsonp”,而不是数据类型:“json”,
jsonp用于跨域Web服务。希望有帮助。

你的
GetStock
的方法签名是什么?使用Fiddler(fiddler2.com)模拟
POST
请求(使用Composer选项卡)并查看你的响应-这将明确告诉你实际收到的详细错误消息。500是服务器端错误。你调试服务器端代码了吗?另外,
“{id='1'}”
不是有效的json,并且
id
!=<代码>变量id。我想这很重要。试试
{“variant\u id”:“1”}
好的。我把身份证换成了变体身份证,这是我的错。但是我得到了同样的错误。直接转到这个:
http://myserver:123/WServ/EDt.asmx/HelloWorld
显示xml。但是当我执行上述操作时,我已经得到一个
0错误
。知道为什么吗?@Si8你有什么错误?向我们显示错误消息。这是我的问题:你必须使用绝对url吗?相对链接不适合你?
   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);
    }