JSON返回null响应与jQuery $ .ajax

问题描述:

我想在ajax后获得响应,但总是返回NULL。

我在想,已经尝试了所有我可以......但希望有人能够解决它。首先十分感谢。如果需要更多信息,请告诉我。

注:PHP function not returning any data to JQuery ajax method - 这个环节并没有帮助我

这里是jQuery代码:

var post_id=3; 
     $.ajax({ 

      type: "POST", 
      url: "profile/ajax_get_new_posts", 
      data: { post_id : post_id }, 
      dataType: 'json', 
      success: function(data){ 

       console.log(data); 
       var current_content = $("ol#posts_container").html(); 

       $("ol#posts_container").html(data.content + current_content); 
      } 


     }); 

资料/ ajax_get_new_posts(它名为.php)

function ajax_get_new_posts(){ 

     header('Content-Type: application/json'); 
      $post_id=$this->input->post('post_id'); 
      $chat_messages_html='testing'; 
      $result = array('status' => 'ok', 'content' => $chat_messages_html); 
      $result=json_encode($result); 
      return ($result); 
      exit(); 
     } 

如果我试着用var_dump($ result); die();给我正确的结果:

string(38) "{"status":"ok","content":"samoletite"}" 

在响应头给我的Content-Length:0(它正在测试在本地主机上......不www.mywebsite)

Remote Address:[::1]:80 
    Request URL:http://www.mywebsite/bg/profile/ajax_get_new_posts 
    Request Method:POST 
    Status Code:200 OK 
    Request Headersview source 
    Accept:application/json, text/javascript, */*; q=0.01 
    Accept-Encoding:gzip,deflate 
    Accept-Language:en-US,en;q=0.8 
    Connection:keep-alive 
    Content-Length:9 
    Content-Type:application/x-www-form-urlencoded 
    Host:localhost 
Origin:http://localhost 
Referer:http://www.mywebsite/bg/profile 
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36 
X-Requested-With:XMLHttpRequest 
Form Dataview sourceview URL encoded 
post_id:3 
Response Headersview source 
Connection:Keep-Alive 
Content-Length:0 
Content-Type:application/json 
Date:Fri, 31 Oct 2014 13:24:56 GMT 
Keep-Alive:timeout=5, max=97 
....... 

CONSOLE.LOG给我:

null --->ajaxPostProfile.js:28 
Uncaught TypeError: Cannot read property 'content' of null --->ajaxPostProfile.js:31 

而是使用return ($result);,使用echo。像这样:

function ajax_get_new_posts(){ 

     header('Content-Type: application/json'); 
      $post_id=$this->input->post('post_id'); 
      $chat_messages_html='testing'; 
      $result = array('status' => 'ok', 'content' => $chat_messages_html); 
      $result=json_encode($result); 
      echo $result; 
      exit(); 
     } 

并再次测试。

+1

谢谢你非常非常....谢谢你救了我的时间从10个小时寻找解决方案。干杯! – 2014-10-31 13:48:26

+0

不客气!请将此答案设为正确。谢谢。 – 2014-10-31 14:09:33

你可以在PHP中使用下面的语法返回JSON数据:

header('Content-Type: application/json'); 
    echo json_encode($result);