【发布时间】:2013-01-02 02:57:32
【问题描述】:
我正在尝试将来自 jquery $.ajax 方法的请求发送到我在不同域上创建的 .net Web 服务。我已经尝试了很多事情,但我仍然无法让它发挥作用。我不断得到的响应是不确定的。
谁能给点建议?
谢谢
.NET 代码
public class Handler1 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string callback = "";
try
{
if (!string.IsNullOrEmpty(context.Request["callback"]))
{
if (!string.IsNullOrEmpty(context.Request["var1"]))
SaveData(context.Request["var1"]);
callback = context.Request["callback"];
var oSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
string sJSON = oSerializer.Serialize(JSON);
HttpContext.Current.Response.ContentType = "application/json";
string qs = HttpContext.Current.Request.QueryString["callback"];
HttpContext.Current.Response.Write(callback+"(\"Clients : \"" + sJSON+ ")");
}
}
catch (Exception exc)
{
context.Response.Write(callback +
"({ \"return\": \"" + exc.Message + "\" })");
}
}
JQUERY
$.ajax({
url: "URL",
dataType: "jsonp",
success: function(data){
alert(data); // Always Undefined
}
});
【问题讨论】:
-
\"Clients : \"位在那里做什么? -
这就是列表的对象类型作为它的过去转换成json。无论 \"Clients : \" 位如何,它似乎都未定义
-
不,不是。没有“对象类型”之类的东西,据我所知,您正在生成无效的 JavaScript (
foo("Clients : "{ }))。如果删除\"Clients : \"会发生什么? -
它仍然显示为未定义。当成功条件正在运行时,我收到了回复,但在 FireBug 中看不到任何数据
-
您传递给序列化程序的
JSON变量是什么?它来自哪里,最重要的是为什么它被称为 JSON?我的意思是序列化程序的目的是传递一个对象实例并生成 JSON。我希望你没有将 JSON 字符串传递给它。
标签: jquery .net json web-services jsonp