简单的javascript wcf web服务调用在成功时返回null

时间:2014-07-26 09:45:39

标签: javascript asp.net wcf

我正在尝试通过返回布尔值的javascript进行简单的WCF Web服务调用。

我在页面中有scriptmanager。

如下所示,回调结果始终在OnAssignSuccess javascript方法中返回null。

如果需要,我可以提供web.config。

诊断跟踪显示在根中返回的布尔值,但不是响应的一部分,如下所示。

  

这是javascript代码

function OnAssignBackup() {
   var employees = document.getElementById("<%=cmbBackup.ClientID%>");
   PT.UpdateBackupSupervisor(employees.value, OnAssignSuccess, OnAssignFailed);
}

function OnAssignSuccess(result) {
   alert('Successfully updated your backup supervisor ' + result);
   // result is null
}
  

这是简单的Web服务

[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class PT
{
    [OperationContract]
    [WebInvoke(ResponseFormat = WebMessageFormat.Json)]
    public bool UpdateBackupSupervisor(string backupUserGUID)
    {
        bool bRet = false;
    .
    .
    .
        return bRet;
    }
}
  

这是诊断跟踪

<MessageLogTraceRecord>
<Addressing xmlns="http://schemas.microsoft.com/2004/06/ServiceModel/Management/MessageTrace">
<Action>urn:PT/UpdateBackupSupervisorResponse</Action>
</Addressing>
<HttpResponse xmlns="http://schemas.microsoft.com/2004/06/ServiceModel/Management/MessageTrace">
<StatusCode>OK</StatusCode>
<WebHeaders>
<Content-Type>application/json; charset=utf-8</Content-Type>
</WebHeaders>
</HttpResponse>
<root type="object" xmlns="">
<d type="boolean">true</d>
</root>
</MessageLogTraceRecord>

1 个答案:

答案 0 :(得分:0)

我通过使用jquery ajax调用让它工作如下。

function OnAssignBackup() {
    var employees = document.getElementById("<%=cmbBackup.ClientID%>");
    $.ajax
        (
            {
                type: 'GET',
                url: '../../Services/PT.svc/UpdateBackupSupervisor',
                data: { backupUserGUID: employees.value },
                success: function (response, status, error) {
                    alert('Successfully Updated Backup Supervisor: ' + status);
                },
                error: function (request, status, error) {
                    alert('Update Backup Supervisor Failed with error: ' + error);
                }
            }
        );
}

我在web.config中使用webHttp行为。