【发布时间】:2012-05-15 13:18:53
【问题描述】:
我有一个用 C# 和 WCF 编写的小型 Web 服务。
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello Worlds";
}
}
我有一点 jQuery 代码;
$.support.cors = true;
$.ajax({
type: "POST",
url: "http://localhost:61614/Service1.asmx/HelloWorld",
data: '{}',
dataType: "json",
success: function (msg) {
alert(0);
}, error: function (a, b, c) { alert("Err:" + c );
}
});
这会调用网络服务。调用没有问题,但返回时出错。
网络服务在一个应用程序中,而网页本身就是一个 HTML 页面。最终,HTML 将在 PhoneGap 中使用。
我已经尝试了各种方法。
添加contentType: "application/json; charset=utf-8", 会导致整个调用失败。
使用dataType: 'jsonp" 会导致调用失败。
基本上,上面调用了 WS,但返回时出错,这很奇怪。
我的要求是我需要从 web 服务返回一个 JSON 对象,并且它必须在 Safari 中工作。
有人有完整的 JSONP 调用示例代码吗?
【问题讨论】:
-
不确定是否有帮助 codeproject.com/Articles/186235/…
-
@griegs - 第一步,确保 localhost:61614/Service1.asmx/HelloWorld?callback=test 在您的浏览器中返回一个 JavaScript 函数,如下所示:
test({'say':'HelloWorld'});。除非您这样做,否则 jsonp 请求将不会成功。您可以在地址栏中进行测试。希望这会有所帮助。 -
有一点需要澄清。您是否 100% 确定您在上线后会跨域发出请求?如果它是同一个域,那么你可以只返回没有填充/包装函数的 JSON。
标签: c# web-services jquery jquery-mobile cordova