Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.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
C# 从Ajax/Javascript调用WebService_C#_Javascript_Ajax_Web Services - Fatal编程技术网

C# 从Ajax/Javascript调用WebService

C# 从Ajax/Javascript调用WebService,c#,javascript,ajax,web-services,C#,Javascript,Ajax,Web Services,我这里有点挤。我使用C#创建了一个Web服务。当我调用WebService时,它工作正常。Javascript似乎击中了Web服务,破坏了Web服务,然后继续执行其余的操作。我认为这是我把Web服务称为错误的问题。我搜索了所有地方,发现了大量不同的例子,但是,它们似乎都不起作用 如果您转到它,它将触发test.js,然后调用位于此处的my web服务: 下面是test.js代码- var xmlHttp; setTimeout("sendMessage('rory@careercheatcode

我这里有点挤。我使用C#创建了一个Web服务。当我调用WebService时,它工作正常。Javascript似乎击中了Web服务,破坏了Web服务,然后继续执行其余的操作。我认为这是我把Web服务称为错误的问题。我搜索了所有地方,发现了大量不同的例子,但是,它们似乎都不起作用

如果您转到它,它将触发test.js,然后调用位于此处的my web服务:

下面是test.js代码-

var xmlHttp;
setTimeout("sendMessage('rory@careercheatcode.com');", 2000);
function doUpdate()
{
    if(xmlHttp.readyState===4){
        alert("Worked");
        }
    else{
        alert("Broke");
        }
}
function sendMessage(strTo)
{
    try{
        // Opera 8.0+, Firefox, Safari
        xmlHttp = new XMLHttpRequest();
        } catch (e){
        // Internet Explorer Browsers
        try{
                xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try{
                    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e){
                    // Ajax is not supported
                    return false;
                }
            }
    }   
    xmlHttp.open("post", "http://www.darkslidedesign.com/services/ms_Alert.asmx", true);    
    var params = "op=Sending_Email&strEmailAddrFrom=rory@darkslidedesign.com&strEmailAddrTo=" + strTo;
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlHttp.setRequestHeader("Content-length", params.length);
    xmlHttp.setRequestHeader("Connection", "close");    
    xmlHttp.onreadystatechange=doUpdate;    
    xmlHttp.send(params);
    return false;
}

最好从jQuery$.ajax()开始 这里有一个代码片段,可以让我在文本框中发表评论

function Post() {
         var ow = "username";
         var cmt = $("#comment").val();
         $.ajax(
         {
            type: "POST",
            url: "/comment/Save",
            dataType: "json",
            data: "id=2332&author=" + ow + "&cmt=" + cmt,
            success: function (result) {
               if (result.status === "OK") {
                  alert('Comment posted');
               }
               else
                  alert("Post failed");
            },

            error: function (req, status, error) {
               alert("Sorry! Post failed due to error");
            }
         });

      }
希望这能指导你。
感谢来自Javascript的web服务调用,我使用了两件事:

  • jQuery,正如前面提到的pixelbobby一样。这是一个在公园散步,使一切超级棒酱
  • 我使用asp.NETMVC框架。我在这里解释它太冗长了,但它很容易启动并运行。基本上,您创建一个控制器类,创建一些方法,并返回json序列化的值。您可能还必须向global.asax文件添加一些路由

  • 我肯定会推荐你阅读这两方面的内容。。。他们都非常棒

    我强烈建议使用jQuery广泛而轻巧的AJAX库实现以下目的:获取readystate!=4并不意味着它坏了;这只是意味着请求尚未完成加载。另外,尝试使用两个等号而不是三个。@lazycs:通常在javascript中,您应该始终使用三个等号来测试相等性。否则,由于类型强制,您可能会得到意外的结果。@lazycs-我知道它不会破坏它。这是伪文本。请注意,问题不在于DoUpdate函数。我的问题存在于下面的代码中。我需要以这种方式进行设置,因为客户端只能在页面中包含一个javascript文件(指向test.js),而这应该可以处理rest。comment是文本框的id。您需要指定要发布到HI的url,感谢您的输入。但是,我需要通过对javascript文件的单个调用触发它,以便在客户端上使用。这将触发执行其余操作的Web服务。我认为,问题在于sendUpdate函数的末尾是XMLHttp对象。