用于ASP.NET.ascx控件的jQuery Ajax
jQuery Ajax for ASP.NET .ascx control
我正在使用jQuery对代码后面的.ascx控件的方法进行AJAX调用,以获取业务对象列表:
C#代码:
if (Request.Headers["X-OFFICIAL-REQUEST"] == "TRUE") ReturnList(Request.Params[1]);
protected void ReturnList(string param)
{
Response.Write(GetBusinesses(param));
Response.Flush();
try {
Response.Close();
}
catch { }
Response.End();
return;
}
private string GetBusinesses(string classificationName)
{
System.Web.Script.Serialization.JavaScriptSerializer jSearializer = null;
if (!string.IsNullOrEmpty(classificationName))
{
dSourse = BusinessesDBService.Instance.GetLatestListingsUpdates(classificationName).ToList();
jSearializer = new System.Web.Script.Serialization.JavaScriptSerializer();
}
return jSearializer.Serialize(dSourse);
}
jQuery代码:
window.jQuery.ajax({
type: "POST",
async: false,
url: location.href,
dataType: "json",
data: ({ 'FUNCTION': 'ReturnList', 'param0': classificationName.toLowerCase() }),
success: function (data) {
data = eval(data);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
},
beforeSend: function (xhr) {
xhr.setRequestHeader("X-OFFICIAL-REQUEST", "TRUE"); //Used to ID as a AJAX Request
},
complete: function (XMLHttpRequest, textStatus) {
//build HTML
var tablestring = '<table ><tr><td>UsreID" + "</td><td>UserName</td></tr>';
for (var i = 0, len = data.length; i < len; ++i) {
tablestring = tablestring + "<tr>";
tablestring = tablestring + "<td>" +
data[i].BusinessID + "</td>";
tablestring = tablestring + "<td>" +
data[i].BusinessName + "</td>";
tablestring = tablestring + "</tr>";
}
tablestring = tablestring + "</table>";
var divResult = document.getElementById("divAjax");
divResult.innerHTML = tablestring;
}
});
http调用执行得很好,集合被序列化并返回响应,但是我在这里遇到了一些问题。主要的问题是HTML没有被创建——我无法捕获返回的字符串。调用完成后,以下字符串显示在Firebug脚本窗口中
[{"BusinessID":6549,"BusinessName":"Ivory Store","IsMain":true},{"Business ID":16565,"BusinessName:"Classic Nails","IsMain"},{"BusinessID:5877,"BusinessName:"Visible Changes Hair","IsMain":true}]
同样在Firebug中,我注意到XMLHttpRequest响应对象中的字符串和错误消息是"JSON无效"。有什么建议吗?非常感谢。
这不是有效的JSON
[{"BusinessID":6549,"BusinessName":"Ivory Store","IsMain":true}, {"BusinessID":16565,"BusinessName":"Classic Nails","IsMain"},{"BusinessID":5877,"BusinessName":"Visible Changes Hair","IsMain":true}]
看到中间缺失的部分"IsMain"可能需要
[{"BusinessID":6549,"BusinessName":"Ivory Store","IsMain":true}, {"BusinessID":16565,"BusinessName":"Classic Nails","IsMain":true},{"BusinessID":5877,"BusinessName":"Visible Changes Hair","IsMain":true}]
或
[{"BusinessID":6549,"BusinessName":"Ivory Store","IsMain":true}, {"BusinessID":16565,"BusinessName":"Classic Nails","IsMain":false},{"BusinessID":5877,"BusinessName":"Visible Changes Hair","IsMain":true}]
请参阅此页面:单击JSLint按钮:http://jsfiddle.net/QmMdC/
由于某种原因,下面C#解析器代码后面的代码没有在字符串末尾附加"]",所以我不得不手动附加它-它起作用了!!!非常感谢。
public static string Serialize<T>(T obj)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
MemoryStream ms = new MemoryStream();
serializer.WriteObject(ms, obj);
string retVal = Encoding.UTF8.GetString(ms.ToArray());
return retVal + "]";
}
相关文章:
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 将curl查询转换为jQuery.ajax()
- jQuery AJAX write to XML
- jQuery Ajax GET请求工作不正常
- jquery ajax https调用给出ERR_INSECURE_RESPONSE
- VB NET JQUERY AJAX上出现错误500
- 如何使用jquery ajax和jsonp在您自己的域上读取json数据
- Jquery/Ajax.serialize()未完全工作
- 页面加载之前的jQuery Ajax加载程序
- jquery/ajax无限滚动事件
- 使用Jquery$.ajax将json数据传递给servlet(doPost)
- 如何将给定的curl命令复制为jquery ajax请求
- 使用 JQUERY AJAX (Spring MVC) 从控制器中删除
- Twitter API在jQuery AJAX中设置授权头
- AngularJS JQuery Ajax表单提交等效
- jQuery Ajax.ajaxSuccess()事件未激发
- 为什么Jquery$.ajax在函数调用中触发所有statusCode,即使调用成功
- jQuery AJAX总是出错
- jQuery Ajax数组序列化错误
- jQuery AJAX获取Vimeo缩略图