我需要从C#Web服务获取Json数据。
我知道有一些基于此的问题,相信我,我已经阅读了很多,但只是让我进一步困惑。
这是我所做的:
在我的Web服务中,我包括了:[System.Web.Script.Services.ScriptService]
用于类和[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)]
方法
我还使用了a JavaScriptSerializer()
将我的数据转换为字符串
我正在使用此服务致电 $.getJSON()
如果我不使用它,则会收到跨域引用错误。
为此,我必须设置m服务以获取回调函数名称,以便传递t his.Context.Request["callback"]
+序列化的Json Data;
但是在输出中我把它包裹起来
< string xmlns="http://XYZ...">
标签中的数据采用我需要的格式
我也尝试使用设置内容类型: $.ajaxSetup({ scriptCharset: "utf-8" , contentType: "application/json; charset=utf-8"});
但是仍然没有成功。
稍后添加:我接受了Frenchie的答案,因为我知道这是正确的方法,但是我仍然无法使它正常工作…我只是将webservice和网站放在相同的域中,并使用了xml,我知道这不是最好的方法,但我花了2天的时间,无法承受更多的浪费。
用这个:
var JsonString = ....;
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "YourWebServiceName.asmx/yourmethodname",
data: "{'TheData':'" + JsonString + "'}",
dataType: "json",
success: function (msg) {
var data = msg.hasOwnProperty("d") ? msg.d : msg;
OnSucessCallBack(data);
},
error: function (xhr, status, error) {
alert(xhr.statusText);
}
});
function OnSuccessCallData(DataFromServer) {
// your handler for success
}
然后在服务器端的AppCode文件夹中自动生成的文件背后的代码中,您将编写如下内容:
using System.Web.Services;
using System.Web.Script.Serialization;
[System.Web.Script.Services.ScriptService]
public class YourWebServiceName : System.Web.Services.WebService
{
[WebMethod]
public string yourmethodname(string TheData)
{
JavascriptSerializer YourSerializer = new JavascriptSerializer();
// custom serializer if you need one
YourSerializer.RegisterConverters(new JavascriptConverter [] { new YourCustomConverter() });
//deserialization
TheData.Deserialize(TheData);
//serialization
TheData.Serialize(TheData);
}
}
如果不使用自定义转换器,则服务器端对象的json字符串和c#类定义之间的属性必须匹配,才能进行反序列化。对于序列化,如果没有自定义转换器,则json字符串将包含c#类的每个属性。您可以[ScriptIgnore]
在c#类中的属性定义之前添加,如果不指定自定义转换器,则序列化程序将忽略该属性。
以下是我的客户端代码: 和服务: Web.config: null
问题内容: 我刚刚将我的网站的测试副本升级到asp.net 4.0,并且注意到了一个奇怪的问题,仅当我将网站上传到服务器时才会出现。 该站点有一个返回json的asmx Web服务,但是当我在服务器上运行该站点时,它会返回xml。它在asp.net 3.5中已经运行了一年多。 webMethod装饰有正确的属性… 在我的本地计算机上,它返回json。 但在服务器(Windows 2008 64位)
问题内容: 早上, 我需要从Web服务返回一条消息。以下是我的代码示例,我正在返回一个字符串。 我目前收到以下回应… 我理想上想返回类似 我敢肯定,一旦我有了主意,就可以在需要时退还其他物品。这只是我需要解决的基础。 非常感谢所有帮助,在此先感谢:) 更新:刚发现这个… 我需要类似的东西吗 问题答案: 用: 返回的结果将类似于:
我得到错误:com.microsoft.sqlserver.jdbc.SQLServerException:驱动程序无法通过使用安全套接字层(SSL)加密建立到SQL服务器的安全连接。错误:“SQL服务器没有返回响应。连接已关闭。” Hibernate配置: application.properties: pom.xml: SQLServerException: openssl客户端连接服务器:1
问题内容: 我正在使用.Net framework 2.0 / jQuery对2.0 Web服务进行Ajax调用。无论我在ajax调用中将contentType设置为什么,该服务始终返回XML。我希望它返回Json! 这里是电话: 这是Fiddler中请求标头的样子: 我尝试将contentType设置为’text / json’并获得相同的结果。 这是Web服务方法: 这是它返回的内容: 有人知
问题内容: 我需要我的Web服务以返回JSON … 我的.asmx文件中包含以下代码: 返回以下内容: 如何强制它返回JSON而不是XML? 问题答案: 您的Web服务定义看起来正确。确保通过帖子调用服务,并记住该键将“内容类型”标头指定为。 (这是使用jQuery,但如果您愿意,可以使用低级JavaScript)