来自jquery .text()的数据的Ajax帖子

时间:2014-01-06 23:29:55

标签: php jquery ajax

我有一个问题,解决方案可能很简单,但我已经几个小时都找不到了。基本上我有一个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() },

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

请帮帮我:) 谢谢!

3 个答案:

答案 0 :(得分:2)

请在控制台上查看$(“。theme-h1”)。text()以字符串形式返回内容。

答案 1 :(得分:1)

尝试在括号中包含您的值:

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对象后面有一个尾随逗号,所以我也删除了它。

答案 2 :(得分:0)

更新:请在下面的答案中删除$ 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);
}); }