使用AJAX发送JSON

时间:2009-08-27 17:00:18

标签: javascript ajax json

在使用AJAX发送JSON对象之前,我有什么特别之处吗?我的代码如下所示:

runAjax(JSON.stringify(data));

}

function runAjax(JSONstring)
{
    ajax = getHTTPObject();
    var params = "?data=" + JSONstring;
    ajax.open("POST", "createtrip.php", true);
    ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    ajax.setRequestHeader("Content-length", params.length);
    ajax.setRequestHeader("Connection", "close");
    ajax.onreadystatechange = serverSpeaks;
    ajax.send(params);
}

现在服务器没有收到数据。我在服务器端获取null,但客户端JSONString已设置。有什么我做错了吗?

3 个答案:

答案 0 :(得分:5)

您正在通过POST发送数据,'?'变量的开头不需要params字符,我还建议您使用encode JSONString以避免出现问题。

请注意,您缺少var变量的ajax语句,这是全局声明(window.ajax),我认为您不需要全局...

function runAjax(JSONstring) {
  var params = "data=" + encodeURIComponent(JSONstring), 
      ajax = getHTTPObject();

  ajax.open("POST", "createtrip.php", true);
  ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  ajax.setRequestHeader("Content-length", params.length);
  ajax.setRequestHeader("Connection", "close");
  ajax.onreadystatechange = serverSpeaks;
  ajax.send(params);
}

答案 1 :(得分:0)

您应该通过编码器正确发送数据。当然,您首先必须看到变量“data”形成为“JSON”。

lib to encode/decode

其他链接 encode/decode

答案 2 :(得分:0)

服务器可以处理帖子正文,例如name1 = value& name2 = value2。

如果您使用的是PHP,则可以通过以下方式接收json字符串:

$data = file_get_contents("php://input");