我在AJAX数据中遇到问题 . (我正在使用asp.net Web表单)我需要从页面dom元素中收集数据,因为我想在同一页面中异步地将它们的值附加到表行 . 只是为了测试我在成功函数中写了警报(数据) . 但是数据会返回“源代码”或“未定义” .
下面我尝试了两种方法来获取HTML和JSON的ajax数据 . 结果是一样的 .
带有JSON数据类型的ajax:
$(document).ready(function () {
$('img').live('click', function (event) {
event.preventDefault();
var number= $(this).attr('id');
var date= '06.04.2015';
var name= "xyz";
$.ajax({
type: 'post',
url: 'treatment.aspx',
contentType: "application/json;charset=utf-8",
dataType:JSON,
data: JSON.stringify({
number: number,
date: date,
name: name
}),
success: function (data) {
alert(data);
}
});
});
});
带有html dataType的ajax:
$.ajax({
type: 'post',
cache: false,
url:'treatment.aspx',
contentType:"text/html",
dataType: 'html',
data:"some data",
success: function (data) {
document.getElementById("demo").innerHTML = data;
}
});
(我也试过alert(data [0] .number)和alert(data.number),不工作 . )
谢谢 .
2 回答
尝试使用此代码,我认为它可能会工作..
我假设你从服务器返回有效的json(我建议你也检查一下) .
在你的jquery ajax调用你有配置
JSON是窗口对象(IE8)上的对象,而不是ajax配置的有效选项 . 所以你将javascript对象传递给jquery ajax调用而不是识别的命令;意思是它不知道该怎么做 . 您需要将此配置属性更改为
有关ajax配置选项的正确值的详细信息,请参见jquery documentation . dataType选项的所有选项都是字符串值 .
在旁注 - 我建议您不要在jquery中使用'live',因为它已被弃用,而是我建议使用'on'代替 .
编辑 - 其他建议
它可能是服务器端代码而不是jquery的问题 . 从ajax url中的aspx页面可以假设您使用的是Web Forms吗?如果是这样,那么对aspx页面的ajax调用通常意味着在该页面上调用web方法;在这种情况下,ajax url需要指定Web方法的名称 . 例如
url: '/some/path/treatment.aspx/MyMethod'
,它会在C#中有相应的Web方法定义(在VB中会有类似的东西)我建议对ajax请求发送的内容以及服务器端代码的接收情况进行一些调查 . 也许在ajax调用上添加一个错误回调,看看它是否被击中以及它报告的内容 . 我猜想客户端发送的内容与服务器期望的内容之间存在一些不匹配,但如果没有更具体的信息,我不确定问题究竟是什么 .
我希望这些建议有所帮助 .