【问题标题】:AJAX JQuery JSON Post Data not Reaching ControllerAJAX JQuery JSON 发布数据未到达控制器
【发布时间】:2012-09-15 15:42:07
【问题描述】:
var url =  base_url+"ajax/user/list_user_info/"+userId;
$.ajax({
        type: "POST",
        url: url,
        data:{user_id:userId},
        contentType: 'application/json',
        dataType: 'JSON',
        success: function(data) {

            if(data.redirect){
                window.location = data.redirect;    
            }
            else {
                $('#profile-main-content').html(data.html);
            }    
        }      
    });

现在,这是我的请求,一个非常标准的 AJAX 请求。我的问题是这个请求由于某种原因没有到达控制器。为了检查,我在数据库中执行了一个简单的测试插入,以检查控制器功能第一行的结果。但是没有插入测试。 url 是正确的,因为我检查了 base_url 的声明。我知道我将“userId”作为参数并将其作为 POST 数据传递,但这只是我拼命尝试。请问有什么想法吗?如果我不清楚任何事情,请告诉我。谢谢。

【问题讨论】:

  • 您是否检查了日志,如果它在发布请求时抛出任何错误?
  • 我正在使用 codeigniter,但我没有启用任何日志,调试器也无法正常工作,可能是因为我在 64 位操作系统上使用 32 位版本

标签: jquery ajax json post


【解决方案1】:

代替:

data:{user_id:userId}

尝试:

data: JSON.stringify({user_id:userId})

原因是你指定了application/json的请求内容类型,所以你需要发送JSON。在您的代码中,您没有发送 JSON 请求 - 您发送的是简单的 application/x-www-form-urlencoded POST 请求。而且由于您已经在 POST 正文中传递了 userId,因此您可能不需要在 url 中重复它。使用一种或另一种方法将此信息发送到您的服务器。

另外,为了更轻松地调试 javascript 错误,我强烈建议您使用FireBug。在许多方面,它允许您查看在 AJAX 调用期间发送的确切请求/响应,并分析您从服务器获得的确切错误消息。它使调试问题变得更加容易。

【讨论】:

  • 我删除了数据部分,并决定将它作为参数传递到 url 中,但仍然没有。我也尝试了stringify,但一无所获。
  • 预期的结果是什么?您是否尝试过使用 FireBug 分析来自服务器的响应?可能它将包含有关错误的更多信息。还可以尝试调试您的服务器端脚本。顺便说一句,您没有提到任何有关您的服务器端部分的内容 - 您使用什么语言/框架,提供示例源代码,...
  • 嘿,谢谢伙计,问题是,在控制器中,我两次声明了相同的函数,并且由于我没有使用调试器,所以它没有显示。
猜你喜欢
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多