[英]Post JSON data without ajax or form
我有一个要发布的json对象。 我相信即时通讯已关闭,但数据未正确发送。
数据格式正确的json字符串,并且可以与ajax一起正常使用。 但是,该页面需要根据REST API的请求进行重定向。 显然,使用ajax不会发生。
var data = JSON.stringify(myJsonObject);
$('<form enctype="application/json" action="/projects" method="POST">' +
'<input type="hidden" name="json" value="' + data + '">' +
'</form>').submit();
我认为您需要转义字符串化的JSON。
var data = $(JSON.stringify(myJsonObject);
function escapeHtml(text) {
var map = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": '''
};
return text.replace(/[&<>"']/g, function(m) { return map[m]; });
}
$('<form enctype="application/json" action="/projects" method="POST">' +
'<input type="hidden" name="json" value="' + escapeHtml(data) + '">' +
'</form>').submit();
您的JSON字符串包含引号,并且会中断html。
编辑:如果您不在乎隐藏输入中的格式是否可读,也可以使用escape(string) 。 然后,您可以使用unescape(string)来获取json字符串。 这样,您也可以使用相同的函数将其传递给get请求;)
{name: "test"}
==> %7B%22name%22%3A%22test%22%7D
Curl
可以这样发布数据呢? 您将需要ajax调用PHP函数:
function sendData($json){
$url = 'wwww.exemple.com';
//setting the curl parameters.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
// Following line is compulsary to add as it is:
curl_setopt($ch, CURLOPT_POSTFIELDS,$json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
该函数发送一个json并从API获取返回值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.