2011-05-04 141 views
0

我正在这里进入一个小果酱。我使用C#创建了一个web服务。当我调用WebService时,它工作正常。 JavaScript似乎击中了Web服务,打破了,然后继续执行其余的操作。我认为这是我调用WebService错误的问题。我搜遍了各地,发现了很多不同的例子,但是,它们都没有效果。从Ajax/Javascript调用WebService

如果你去http://success.darkslidedesign.com它触发test.js然后调用设在这里我的web服务:http://www.darkslidedesign.com/services/ms_Alert.asmx

这里是test.js码 -

var xmlHttp; 
setTimeout("sendMessage('[email protected]');", 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&[email protected]&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; 
} 
+3

我强烈建议使用jQuery的广泛而轻量级的AJAX库:http://api.jquery.com/jQuery.ajax/ – pixelbobby 2011-05-04 17:57:04

+0

获取readystate!= 4并不意味着它已经破坏;它只是意味着请求尚未完成加载。另外,尝试使用两个等号而不是三个。 – lazycs 2011-05-04 17:57:39

+0

@lazycs:通常在JavaScript中,您应该始终使用3个等号进行测试相等。否则,由于类型强制,您可能会收到意想不到的结果。 – Tom 2011-05-04 18:44:39

回答

0

您使用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"); 
      } 
     }); 

     } 

希望这会引导你。 感谢

+0

评论是文本框的ID。您需要指定您要发布到的网址 – kheya 2011-05-04 18:23:35

-1

对于从Javascript调用Web服务,我用两件事情:

  1. jQuery的,如前所述pixelbobby。这是在公园散步,使一切超级真棒酱!
  2. 我使用asp.net MVC框架。我在这里解释它太冗长了,但它很容易启动和运行。基本上,你创建一个控制器类,创建一些方法,并返回json序列化的值。您可能还需要添加一些路线到您的global.asax文件。

我肯定会推荐阅读这些东西......它们都很棒!

+0

嗨,感谢您的输入。但是,为了在客户端上更轻松,我需要将它从一个JavaScript文件的单个调用中触发。然后,这将触发剩余的Web服务。问题在于,我相信sendUpdate函数的末尾是XMLHttp对象。 – r584 2011-05-04 19:26:06