我正在尝试创建一个简单的AJAX&amp; Web服务测试(使用C#.Net 2.0)以JSON格式返回数据,我(我相信)我需要的一切,但我一遍又一遍地遇到同样的问题。 Web服务的响应始终是XML。 (它总是<?xml version="1.0" encoding="utf-8"?>
作为第一行。
我已尝试过ScriptMethod标记中的各种选项,但没有任何区别。
这个调用工作正常,但是我得到了一个带有响应的“parsererror”,我认为这是因为它不是有效的JSON。我可以在浏览器中调用Web服务方法,并以XML格式获取我期望的返回值。 Fiddler还表明请求和响应正如我所发现的那样。
关于完全相同的问题,这里已经有几个问题,但没有一个问题给我一个合适的答案。
如果您需要更多信息,请提出问题。
C#
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Services;
using System.Web.Script.Services;
using System.Web.Script.Serialization;
namespace jQueryWebServiceTest
{
/// <summary>
/// This is a simple web service to test calling from javascript using AJAX, and getting a response.
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[ScriptService]
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string SayHello()
{
// I've tried both this...
var response = new { value = "Hello" };
JavaScriptSerializer json = new JavaScriptSerializer();
return json.Serialize(response);
// and this...
return "Hello";
}
}
}
的Javascript
$(function () {
var data = JSON.stringify({ Name: "John" }); // This is not used - part of other testing.
data = "{}";
$.ajax({
type: "POST",
data: data,
url: "TestService.asmx/SayHello",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
console.log(data);
},
error: function (error, status) {
console.log("status = " + status);
console.log(error);
}
});
});
答案 0 :(得分:2)
我设法通过在web.config中添加以下2个块来实现它。
configuration
内的system.web
区块...
<assemblies>
<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</assemblies>
以及其他任何地方,system.web
...
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" type="System.Web.Script.Services.ScriptHandlerFactory" validate="false"/>
</httpHandlers>