2011-05-04 81 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