首页 文章

ajax数据返回'page source code'或'undefined'

提问于
浏览
0

我在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 回答

  • 1

    尝试使用此代码,我认为它可能会工作..

    $(document).ready(function () {
    $('img').live('click', function (event) {
        event.preventDefault();
    
    var jsonObject = new Object();
    jsonObject.number = $(this).attr('id');
    jsonObject.date   = 'date value';
    jsonObject.name   = 'desired name';
    var jsonData      = json.parse(jsonObject);
    
               $.ajax({
    url: "your orders",
    type: "POST",
    data: jsonData,
    dataType: "json"
    });      
            success: function (data) {
                alert(data);
            } 
        });
    }); 
    });
    
  • 0

    我假设你从服务器返回有效的json(我建议你也检查一下) .

    在你的jquery ajax调用你有配置

    dataType: JSON
    

    JSON是窗口对象(IE8)上的对象,而不是ajax配置的有效选项 . 所以你将javascript对象传递给jquery ajax调用而不是识别的命令;意思是它不知道该怎么做 . 您需要将此配置属性更改为

    dataType: 'json'
    

    有关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中会有类似的东西)

    [WebMethod]
    public static string MyMethod(){
        // your code
        return someJsonString;
    }
    

    我建议对ajax请求发送的内容以及服务器端代码的接收情况进行一些调查 . 也许在ajax调用上添加一个错误回调,看看它是否被击中以及它报告的内容 . 我猜想客户端发送的内容与服务器期望的内容之间存在一些不匹配,但如果没有更具体的信息,我不确定问题究竟是什么 .

    我希望这些建议有所帮助 .

相关问题