用Ajax通过Post请求给select绑定值时,一直获取不到数据请大神看看
ashx
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
if (context.Request["action"] == "GetPDF417")
{
GetPDF417();
}
else if (context.Request["action"] == "GetBarCode")
{
GetBarCode();
}
context.Response.Flush();
context.Response.End();
}
private void GetBarCode()
{
var cxt = HttpContext.Current;
var jsonStr = "";
DataSet ds = mGear.Projects.Utility.SqlHelper.ExecuteDataset(conn, CommandType.StoredProcedure, "SelectBarCode");
jsonStr = JsonConvert.SerializeObject(ds);
cxt.Response.Write(jsonStr);
}
js
$(document).ready(function () {
$.ajax({ url: "Pdf417.ashx/GetBarCode",
type: "post", dataType: "json",
contentType: "application/json;charest=utf-8",
traditional: true,
success: function (data) {
var data = eval(data);
for (var i in data) {
var jsonObj = $.parseJSON(data[i]);
var optionstring = "";
for (var item in jsonObj) {
jsonObj = eval(jsonObj.Table)
for (var i = 0; i < jsonObj.length; i++) {
optionstring += "<option value='" + jsonObj[i].Barcode_File + "'>" + jsonObj[i].BarCodeDescript + "</option>";
}
}
$("#selectBarCodeName").html(optionstring);
}
},
error: function (msg) {
alert("出错了!");
}
});
});
建议给代码加上着色
$.post("Pdf417.ashx action=GetBarCode", function (data) {
alert(data);
var optionstring = "";
for (var item in data) {
alert(data);
optionstring += "<option value=" + data[item].BarCodeImage + ">" + item + "</option>";
}
alert(optionstring);
$("#selectBarCodeName").html(optionstring);
});
}
我现在在第一个alert(data)里面是可以弹出json数据的,但到for循环时alert时弹出的为什么会是空的呢?
url: "Pdf417.ashx/GetBarCode",
改成下面的再试试~
url: "Pdf417.ashx",
data:{ "action": "GetBarCode" },
url: "Pdf417.ashx/GetBarCode"
修改为 url: "Pdf417.ashx? type=GetBarCode"
Ashx里面用context.Request.QueryString["type"]来判断。
另外看一下Pdf417.ashx路径和你请求的路径对不对,看看是不是要修改成../Pdf417.ashx
当然你可以调试:error: function (msg) {
alert("出错了!");} 在里面看一下msg的具体是什么错误。
$.post("Pdf417.ashx action=GetBarCode", function (data) {
alert(data);
var optionstring = "";
for (var item in data) {
alert(data);
optionstring += "<option value=" + data[item].BarCodeImage + ">" + item + "</option>";
}
alert(optionstring);
$("#selectBarCodeName").html(optionstring);
});
}
我现在在第一个alert(data)里面是可以弹出json数据的,但到for循环时alert时弹出的为什么会是空的呢?
@hxkk: 分析data的结构。一个马上搞定了。
另外“Pdf417.ashx action=GetBarCode” 你这里面少了“?”