ASP.NET - 将 JSON 从 jQuery 传递到 ASHX
我正在尝试将 JSON 从 jQuery 传递到 .ASHX 文件。下面的 jQuery 示例:
$.ajax({
type: "POST",
url: "/test.ashx",
data: "{'file':'dave', 'type':'ward'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
});
如何检索 .ASHX 文件中的 JSON 数据?我有方法:
public void ProcessRequest(HttpContext context)
但我找不到请求中的 JSON 值。
I'm trying to pass JSON from jQuery to a .ASHX file. Example of the jQuery below:
$.ajax({
type: "POST",
url: "/test.ashx",
data: "{'file':'dave', 'type':'ward'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
});
How do I retrieve the JSON data in my .ASHX file? I have the method:
public void ProcessRequest(HttpContext context)
but I can't find the JSON values in the request.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
我知道这太旧了,但只是为了记录我想添加我的 5 美分
你可以用这个读取服务器上的 JSON 对象
I know this is too old, but just for the record I'd like to add my 5 cents
You can read the JSON object on the server with this
以下解决方案对我有用:
客户端:
服务器端.ashx
The following solution worked for me:
Client Side:
Server Side .ashx
如果您向服务器发送关于
$.ajax
的数据,则数据不会自动转换为 JSON 数据(请参阅 如何构建 JSON 对象以发送到 AJAX WebService?)。因此,您可以使用contentType: "application/json; charset=utf-8"
和dataType: "json"
并且不要使用JSON 转换数据。 stringify
或$.toJSON
。 而不是(手动将数据转换为 JSON)
您可以尝试使用context.Request.QueryString["file"] 和 context.Request.QueryString[ 在服务器端获取数据, “类型”] 构造。如果您确实以这种方式遇到一些问题,那么您可以尝试
在服务器端使用
DataContractJsonSerializer
。If you send data to the server with respect of
$.ajax
the data will not be converted to JSON data automatically (see How do I build a JSON object to send to an AJAX WebService?). So you can usecontentType: "application/json; charset=utf-8"
anddataType: "json"
and stay don't convert data withJSON.stringify
or$.toJSON
. Instead of(manual converting of data to JSON) you can try use
and get the data on the server side with
context.Request.QueryString["file"]
andcontext.Request.QueryString["type"]
constructs. If you do receive some problems with this way then you could try withand usage
DataContractJsonSerializer
on the server side.这适用于调用网络服务。不确定 .ASHX
This works for calling web services. Not sure about .ASHX
您必须在 Web 配置文件中定义处理程序属性来处理用户定义的扩展请求格式。这里用户定义的扩展名是“.api”
add verb="*" path="test.api" type="test"
将 url: "/test.ashx" 替换为 url: "/test.api" 。
you have to defined the handler properties in web configuration file to handle the user defined extension request formats. here the user defined extension is ".api"
add verb="*" path="test.api" type="test"
replace the url: "/test.ashx" to url: "/test.api" .
如果使用 $.ajax 并使用 .ashx 获取查询字符串,不要设置数据类型,
我可以正常工作!
if using $.ajax and using .ashx to get querystring ,dont set datatype
i get it work!
尝试使用
System.Web.Script.Serialization.JavaScriptSerializer
强制转换为字典
Try
System.Web.Script.Serialization.JavaScriptSerializer
With casting to dictionary