我有一个问题,解决方案可能很简单,但我已经几个小时都找不到了。基本上我有一个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() },
它仍然不起作用。好像我只能在我发送的变量的引号之间有一个值。
请帮帮我:) 谢谢!
答案 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);
}); }