簡體   English   中英

在AJAX中調用WCF服務操作

[英]Calling WCF Service Operations in AJAX

我有一個asp.net應用程序,在其中我正在使用“在AJAX中調用WCF服務操作”方法。 我在沒有IIS托管服務的情況下完成了工作。 我得到了正確的解決方案。 但是現在,我還有另一個要求,我要使用本地主機iis上托管的WCF服務。 但是在單擊按鈕時,我遇到了一個JavaScript錯誤,如預期的對象。 我不知道為什么會這樣? 我的代碼如下所示。

<fieldset style="width: 804px" align="center">
    <legend>Consuming WCF Service using Client-Side AJAX</legend>
    <div align="left" style="text-align: center">
        <form id="form1" runat="server">
        <asp:ScriptManager ID="SM1" runat="server">
            <Services>
                <asp:ServiceReference Path="http://localhost/WCFService/Service1.svc" />
                <%--~/Service1.svc--%>
            </Services>
        </asp:ScriptManager>
        <input id="addNum1" type="text" size="3" />
        +
        <input id="addNum2" type="text" size="3" />
        =
        <input id="addAnswer" type="text" size="3" /><br />
        <input id="btnAddition" type="button" value="Do Addition" onclick="DoAddition()" />
        <br />
        <br />
        <input id="subtractNum1" type="text" size="3" />
        -
        <input id="subtractNum2" type="text" size="3" />
        =
        <input id="subtractAnswer" type="text" size="3" /><br />
        <input id="btnSubtraction" type="button" value="Do Subtraction" onclick="DoSubtraction()" />
        <br />
        <br />
        </form>
    </div>
</fieldset>

<script language="javascript" type="text/javascript">

function DoAddition() {
    Service1.Add(document.getElementById('addNum1').value, document.getElementById('addNum2').value, onAddSuccess);
}
function DoSubtraction() {
    Service1.Subtract(document.getElementById('subtractNum1').value, document.getElementById('subtractNum2').value, onSubtractSuccess);
}

function onAddSuccess(result) {
    document.getElementById('addAnswer').value = result;
}
function onSubtractSuccess(result) {
    document.getElementById('subtractAnswer').value = result;
}

javascript錯誤消息是這樣的

圖片

請幫助我解決此問題。

Java腳本(例如Service1.Add.. 生成的js代理的名稱將不是Service1,因此是問題所在。 代理對象的名稱將采用[Namespace].[Contract Name] ,其中服務的名稱空間由ServiceContract屬性的Namespace參數聲明。 如果您未指定,則默認為“ tempuri.org ”。 例如,如果您的服務定義為

[ServiceContract(Namespace="Samples.Services")]
public class Service1
{
  [OperationContract]
  public void Add(...

然后在js中,您需要使用Sample.Services.Service1.Add

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM