2015-10-05 44 views
0

第一AJAX响应,越来越不确定的(在控制台正常JSON)

<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数组 - >在我的控制台中,有一个json数组,如:{"tweet","HERE IS THE POST OR SOMETHING ESLE"} 但在div内部它被称为undefined。 在我console.log("Output: "+data)我得到了这样的事情:

输出:tweetText = fgsdgfh

问:为什么我得到一个不确定我的div内?它应该显示的鸣叫

+0

哪里是问题吗? – developerwjk

+0

我加了问题。感谢提高我... – LukasA

回答

1

尝试增加dataType参数$.post

它没有出现,您在服务器上设置Content Type标题,因此响应可能被解释为文本。

这将告诉$.post期待json和内部解析它

$.post(url, data, function (o){ 
    $("#tweets").append("<div>"+o.tweet+"</div>"); 
},'json'); 
+0

它仍然没有工作,但谢谢你的提示,我忘了那... – LukasA

+0

你在回调时看到什么,当你' console.log(o)'? – charlietfl

+0

如果我把文本字段中的你好世界,我得到了{tweet =“hello word”} 但我为什么要那么做?这不是正确的JSON格式... – LukasA

0

更改此:

$.post(url, data, function (o){ 
    $("#tweets").append("<div>"+o.tweet+"</div>"); 
}); 

到:

$.post(url, data, function (o){ 
    $("#tweets").append("<div>"+o.tweetText+"</div>"); 
}); 
+0

试过,但我仍然得到一个undefined里面... – LukasA

0
$.post(url, data, function (o){ 
    $("#tweets").append("<div>"+o.tweet+"</div>"); 
}); 

输入参数的功能是什么,是从返回的页面。所以o是你返回的HTML。它是一个字符串,而不是一个对象。

所以,正确的格式将

$.post(url, data, function (o){ 
    $("#tweets").append("<div>"+ o +"</div>"); 
});