第一个
<form id="tweetInsert" action="<? echo URL ?>homescreen/ajaxInsertTweet/" method="post">
<textarea name="tweetText" rows="3" cols="40"></textarea>
<button type="submit" name="submitTweet">Tweet</button>
</form>
<div class="row">
<div id="tweets">
</div>
</div>
第二个
function ajaxInsertTweet()
{
$tweet = $_POST["tweetText"];
$stmtInsertTweet = $this->db->prepare("INSERT INTO tweets (tweet) VALUES (:tweet)");
$stmtInsertTweet->execute(array(':tweet' => $tweet));
$data = array('tweet' => $tweet );
//print_r($data);
echo json_encode($data);
exit;
//header("Location:".URL."homescreen");
}
第三个
$("#tweetInsert").submit(function(ev){
ev.preventDefault();
var url = $(this).attr("action");
var data = $(this).serialize();
console.log("Output: " + data);
$.post(url, data, function (o){
$("#tweets").append("<div>"+o.tweet+"</div>");
});
});
我尝试在div内部立即加载帖子而不刷新页面,所以我在我的javascript上加载一个函数来执行帖子并停止提交表单。我有一个json数组 - &gt;在我的控制台中,有一个json数组,如:{"tweet","HERE IS THE POST OR SOMETHING ESLE"}
但是在div中它被称为undefined。
在我的console.log("Output: "+data)
中,我得到了类似的内容:
输出:tweetText = fgsdgfh
问题:为什么我的div里面有一个未定义的?它应该显示推文
答案 0 :(得分:1)
尝试将dataType
参数添加到$.post
。
您似乎没有在服务器上设置Content Type
标头,因此可能会将响应解释为文本。
这会告诉$.post
期待json
并在内部解析
$.post(url, data, function (o){
$("#tweets").append("<div>"+o.tweet+"</div>");
},'json');
答案 1 :(得分:0)
改变这个:
$.post(url, data, function (o){
$("#tweets").append("<div>"+o.tweet+"</div>");
});
为:
$.post(url, data, function (o){
$("#tweets").append("<div>"+o.tweetText+"</div>");
});
答案 2 :(得分:0)
$.post(url, data, function (o){
$("#tweets").append("<div>"+o.tweet+"</div>");
});
该函数的输入参数是从页面返回的内容。所以o是你返回的HTML。它是一个字符串,而不是一个对象。
所以正确的格式是
$.post(url, data, function (o){
$("#tweets").append("<div>"+ o +"</div>");
});