如何在没有重定向页面的情况下使用jquery post发送大数据?

时间:2013-04-17 04:21:49

标签: javascript jquery json chat getjson

我想知道如何在没有重定向页面的情况下使用jquery POST发送大数据? 我有一个项目来创建移动聊天,并在用户应用程序和服务器之间进行连接,我使用JSON。 这是jquery get json脚本的样子,因为我们知道jsonGet无法处理大数据。

注意:bigNumber有8000个字符。

$.getJSON('process.php?input='+bigNumber, function(data) {
    $.each(data.Chats, function(i,output)
    {
        $("#data").append(output.chat);
    });
});

这是我使用getJSON发送大号时所得到的: 414(Request-URI Too Large)

所以,在我发送bigNumber之后,我会从process.php获得一个响应作为json数据并添加到html的主体。

// --- 现在这是我的代码。

html文件

<script src="jquery.min.js"></script>
<script>
$(function(){
    $("#senddata").click(function() {
        $.ajax({
            dataType: "json",
            url: "process.php",
            data: { input:$("#bigNumber").val() },
            success: function(data) {
                $.each(data.Chats, function(i,output)
                {
                    $("#data").append(output.key);
                });
            },
            method: "POST"
        });
    });
});
</script>
<div id="data"></div>
<input type="text" id="bigNumber"/>
<button id="senddata">Send</button>

这是 process.php

header('Content-type: application/json');

$key = $_POST["input"];

$simpan_array = array();

$chat = array();
$chat["key"] = $key;

array_push($simpan_array, $chat);

echo json_encode(array("Chats" => $simpan_array));

当我填写文本框并按“发送”按钮时,没有任何反应。 怎么了?


刚刚发现问题是什么,这是json格式的一个错误,显示在process.php上

3 个答案:

答案 0 :(得分:2)

您需要使用POST请求。由于getJSON()只是ajax()的外观,因此很容易转换:

$.ajax({
  dataType: "json",
  url: "process.php",
  data: { input:bigNumber },
  success: function(data) {
    $.each(data.Chats, function(i,output)
    {
        $("#data").append(output.chat);
    });
  },
  method: "post"
});

答案 1 :(得分:1)

使用$.post

$.post('process.php',{input: bigNumber}, function(data) {
  $.each(data.Chats, function(i,output)
  {
    $("#data").append(output.chat);
  });
},'JSON');

答案 2 :(得分:0)

为什么你不能尝试使用websockets进行聊天应用程序请参阅此页面 Web Socket ServerIntroduction to HTML5 WebSocket