Handler1.ashx文件,前台用AJAX怎么取数据
本帖最后由 chirea 于 2012-11-27 17:37:05 编辑 Handler1.ashx文件代码
/// <summary>
/// ProductHandler 的摘要说明
/// </summary>
public class ProductHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/xml";
string PCid = context.Request["ID"];
DataSet ProClass = Business.BLL_Product.getProductClassByID(PCid);
// ProClass.WriteXml(context.Response.Output);
context.Response.Write(ProClass.GetXml());
}
public bool IsReusable
{
get
{
return false;
}
}
}
前台代码
<script type="text/ecmascript">
$(function () {
$('a').click(function () {
$('.children').css('display', 'none');
$(this).next('.children').css('display', 'block');
var Pid = $(this).attr('id');
$.post("ProductHandler.ashx", { "ID": Pid }, function (xhr) {
var items = xhr.firstChild;
items = $(items);
var str = "";
for (var i = 0; i < items[0].childNodes.length; i++) {
var ID = $(items[0].childNodes[i]).find("ID").text();
var C4_Picture1 = $(items[0].childNodes[i]).find("C4_Picture1").text();
var ProductID = $(items[0].childNodes[i]).find("ProductID").text();
str += '<div class="ProImg"><div> <a href="ProductDetail.aspx?id=' + ID + '"><img src="' + C4_Picture1 + '" alt="Handler1.ashx文件,前台用AJAX如何取数据" /></a></div>' + '<div class="ProductName"> ' + ProductID + '</div> </div>'
}
$("producc").html(str);
});
});
})
前台这样写for循环找不到数据.还是有什么方法可以很方便快捷的取到一般性程序文件的数据呢?
var ID = $(items[0].childNodes[i]).find("ID").text();这样经常找不到.但直接方问ProductHandler.ashx是有数据的
[最优解释]
$.post("getdata.ahsx",{"type":$("#txttype").val()},function(data,status){
if(status!="success"){
return;
}
var jsonData = $.ParseJSON(data);
for(var i=0;i<jsonData.length;i++){
//你的操作
}
})
[其他解释]
哪位高手能指点一下.搞了好久没搞明白
[其他解释]
返回json格式是不是容易处理一些。
$.get(url,function(data){
//data is json
},"json")
Newtonsoft.Json 可方便转 datable, dataset到json.
[其他解释]
有这方面的例子吗?
[其他解释]
先把你的dataset转换为对象集合(需要先建一个实体类,再建一个泛型LIST集合,将这些对象添加到集合中),然后再用JavaScriptSerializer类进行序列化发送给前台。
[其他解释]
同意!
我只处理json。
[其他解释]
谢谢,我转成JSON后
前台要怎么取得值呢?
var request = new Sys.Net.WebRequest();
request.set_url("ProductHandler.ashx");
request.set_httpVerb("POST")
request.add_completed(
function (response) {
if (response.get_responseAvailable()) {
var prol = response.get_object();
alert(prol.ID);
}
});
var requestBody = String.format("ID={0}", Pid);
request.set_body(requestBody);
request.invoke();
直接访问ProductHandler.ashx?id='xxxxxxx'
以经有JSON数据了
定义了一个这样的类
public class ProductList {
public string ID { get; set; }
public string ProductID { get; set; }
public string ProductImages { get; set; }
}
前台要怎么取得数据呢?
[其他解释]
使用javascript的eval方法,或者jQuery的ParseJSON方法(需要引入jQuery库)就可以将JSON数据转换为数组,并对数组进行遍历,并操作显示这些数据。
[其他解释]
JSON数据格式是下面这样的
[{"ID":"49613990-edb5-406e-82d4-4d80898b7593","ProductID":"BBB","ProductImages":""},{"ID":"1b2d938c-5ab2-4865-951e-4e5c50d0f4de","ProductID":"a2","ProductImages":""},{"ID":"7d6b1884-7112-4be1-9a0f-5a78399f3124","ProductID":"A002","ProductImages":""},{"ID":"8e31568d-2ee6-4d92-9930-64dddbd82bd7","ProductID":"A003","ProductImages":""},{"ID":"bf35db9f-8476-4709-9921-7b938334d439","ProductID":"ss","ProductImages":""}]
我在回调函数里面不知道怎么取这里面的值了
request.add_completed(
function (response) {
//这里不知道怎么取.
没有取过JSON数据.能举例说一下吗?
});
[其他解释]
全是JQ的写法不太会,
我需要向ahsx传送一个ID参数进去的.这种写法怎么传参呀
[其他解释]
弄明白了.谢谢yaotomo