我正在尝试通过返回布尔值的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>
答案 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行为。