【问题标题】:Ajax post with data from jquery .text()带有来自 jquery .text() 的数据的 Ajax 发布
【发布时间】:2014-01-06 23:29:55
【问题描述】:

我有一个问题,解决方案可能很简单,但我已经有几个小时找不到了。基本上我有一个 Ajax 帖子到控制器。我希望使用 Ajax 发送的数据从我的页面中的“.theme-h1”类中获取,所以我有这个

function get_video_reviews_data(){
something = $(".theme-h1").text();
alert(something);
$.ajax({
    type: "POST",
    url: "<?php echo base_url(); ?>main/video_reviews_data",
    dataType: 'json',
    data: { title: something },
})
.done(function(data) {
    alert(data.title);
    get_video_reviews_videos(data);
}); }

在这种情况下,我的控制器由于某种原因看不到 $_POST['title']。 如果我将第二行更改为:

something = "some text";

然后我可以在我的控制器中看到 $_POST['title']。 我也试过改变这个:

data: { title: something },

到这里:

data: { title: $(".theme-h1").text() },

它仍然不起作用。似乎我只能在要发送的变量的引号之间有一个值。

请帮帮我:) 谢谢!

【问题讨论】:

  • 请让我们看看你的 HTML :)
  • .theme-h1 指的是什么?
  • 这是我认为的 div:

    ItemAttributes->Title; ?>

    只是产品的标题
  • 这真的让我很烦, .text() 不是已经返回一个字符串了吗?为什么 Ajax 调用没有接收到它,为什么当我只写 data: { title : "text" } 时它会起作用......

标签: php jquery ajax


【解决方案1】:

请在控制台上检查 $(".theme-h1").text() 是否返回字符串。

【讨论】:

【解决方案2】:

尝试将您的值括在括号中:

function get_video_reviews_data(){
    $.ajax({
        type: "POST",
        url: "<?php echo base_url(); ?>main/video_reviews_data",
        data: {
            title:($(".theme-h1").text())
        }
    }).done(function(data) {
        alert(data.title);
        get_video_reviews_videos(data);
    }); 
}

不知道为什么,但我发现通过将它括在括号中,它可以神奇地允许调用 jQuery 方法,而以前它不会。

另外,请注意我删除了datatype:'json'。不要把它留给智能猜测(这确实是 jQuery 所做的,它远非防弹),在文件的标题中明确声明它:

header('Content-type: application/json');

防弹的。我还注意到data 对象后面有一个逗号,所以我也删除了它。

【讨论】:

  • 试过了,还是不行,在控制器中看不到变量。这是我的控制器:public function video_reviews_data(){ $search_term = $_POST['title']; $data['title'] = $_POST['title']; } echo json_encode($data);
  • 您的方法由于某种原因有效:) 我确实必须重新添加数据类型,因为来自控制器的响应是 json_encoded。谢谢!
【解决方案3】:

更新:请删除下面答案中 $data 后的附加逗号,然后重试...

另外,您是否使用 firebug 在浏览器中调试代码?如果是这样,您的“帖子”信息会显示什么?

试试这个:

something = $(".theme-h1").text();

$data = "&title=" + encodeURIComponent(something);

$.ajax({
    type: "POST",
    url: "<?php echo base_url(); ?>main/video_reviews_data",
    dataType: 'json',
    data: $data,  
})
.done(function(data) {
    alert(data.title);
    get_video_reviews_videos(data);
}); }

【讨论】:

  • 试过了,同样的,$_POST['title'] 是空的。
猜你喜欢
  • 2016-06-13
  • 2016-07-22
  • 2016-07-30
  • 2021-07-30
  • 2019-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-01
相关资源
最近更新 更多