jQuery的JSON请求

时间:2015-05-04 09:09:33

标签: javascript php jquery ajax json

我正在尝试向php文件发送一个AJAX请求,我希望php文件以JSON对象响应,但是当声明我特意想要返回JSON时,AJAX函数会不断失败。任何帮助将不胜感激。

这是我的ajax功能

function getMessages(){
  $.ajax({
    type: 'POST',
    url: 'viewInbox',
    dataType: 'json',
    success: function(msg){
      //var content = data.substr(0, data.indexOf('<')); 
      populateMessages(msg);
    },
    error: function(){
      alert("ERROR");
    }
  });
}

这是php文件的相关代码

$message_links[] = array();
.....
while($run_message = mysql_fetch_array($message_query)){
    $from_id = $run_message['from_id'];
    $message = $run_message['message'];
    $user_query = mysql_query("SELECT user_name FROM accounts WHERE id=$from_id");
    $run_user = mysql_fetch_array($user_query);
    $from_username = $run_user['user_name'];
    $message_links[] = array("Hash" => "{$hash}", "From" => "{$from_username}", "Message" => "{$message}");
    // is that not valid json notation???
    }            
}
echo json_encode( $message_links, JSON_FORCE_OBJECT);
//$arr = array("a" => "1", "b" => "2");
//echo json_encode($arr);

UPDATE:

好吧,我最终将dataType请求切换为'html',我现在能够通过JSON实际访问这些值,但是,我仍然想知道为什么php文件没有返回正确的JSON表示法。任何见解都会令人敬畏,欢呼。

function getMessages(){
    $.ajax({
        type: 'POST',
        url: 'viewInbox',
        dataType: 'html',
        success:function(msg){
            var content = msg.substr(0, msg.indexOf('<'));
            msg = JSON.parse(content);
           populateMessages(msg);
        },
        error: function(xhr, textStatus, errorThrown) {
            alert(errorThrown);
            alert(textStatus);
            alert(xhr);
        }
    });
}
function populateMessages(data){
    var out = '';
    var json;
    for (var i in data){
        var my_string = JSON.stringify(data[i],null,0);
        json = JSON.parse(my_string);
        alert(json.Hash);
        out += i + ': ' + my_string  + '\n';
    }
    alert(out);
}

1 个答案:

答案 0 :(得分:-1)

您需要在PHP中使用echo之前将标头设置为json类型:

&lt;p&gt;Santa is fat&lt;/p&gt;