此功能连接到按钮的点击事件:
function BlahBlahBlahWCFXML() {
varType = "POST";
varUrl = "http://123.123.123.123/NameOfService.svc/GetStuffById";
varData = '{"stuffId": "' + 12345678-abcd-9012-3456-abcdefghjkl' + '"}';
varContentType = "application/json; charset=utf-8";
varDataType = "xml";
varProcessData = true;
CallService();
}
然后该函数调用此函数:
//Generic function to call AXMX/WCF Service
function CallService()
{
$.ajax({
type : varType, //GET or POST or PUT or DELETE verb
url : varUrl, // Location of the service
cache : false,
data : varData, //Data sent to server
contentType : varContentType, // content type sent to server
dataType : varDataType, //Expected data format from server
processdata : varProcessData, //True or False
success : function(msg) {//On Successfull service call
ServiceSucceeded(msg);
},
error: ServiceFailed// When Service call fails
});
}
当我尝试运行该示例时,我在Google Chrome的开发者工具控制台窗口中获得以下内容:
无法加载资源:服务器响应状态为400(错误请求) XMLHttpRequest无法加载http://123.123.123.123/NameOfService.svc/GetStuffById。 Access-Control-Allow-Origin不允许使用null。
该服务运行正常,我目前正在通过webforms和控制台应用程序调用它。 GetStuffById是我想要调用的方法。它接受一个字符串(在本例中为GUID)作为参数并返回一个字符串。
该服务是WCF服务,并配置为返回SOAP消息。我更喜欢JSON,但这是另一个问题的另一个问题。
有什么想法在这里发生了什么?谢谢!
更新#1 - 我将POST更改为GET。还是不行。
答案 0 :(得分:1)
查看您的代码:
BlahBlahBlahWCFXML
无法访问CallService()
内的所有变量。varData
的值有额外'
(单引号)。如果GUID是常量值,您可以取消字符串连接并简单地写:varData = '{"stuffId": "12345678-abcd-9012-3456-abcdefghjkl"}';
varData = '{"stuffId": "' + varGUID + '"}';
答案 1 :(得分:1)
看起来你正在尝试从jQuery调用WCF SOAP Web服务。这不是开箱即用的。 WCF SOAP服务需要SOAP消息来调用它 - 简单地转到URL是行不通的。如果你坚持使用WCF,那么宁静的WCF会有一些扩展,这将使这更容易。