[英]HTTP Error in my POST data
我的先前代码中存在此HTTP: Error
,原因是查询字符串超出了要发送到我的Web服务的url中的限制(这是我的理解)。 我以前使用过Get
方法,并且kleinohad告诉我要使用POST
方法。 现在,我正在使用POST
但是仍然有错误,就像我在GET
方法中遇到的错误一样,每当我有很多要发送到url的post data
,它就是“ HTTP:错误”(它将无法通过我的Web服务获取) )。
这是我的JavaScript代码:
var dataJSON = {
"SessionID": $.cookie("SessionID"),
"operation": "add",
"transaction_date":$('#tallyDate').val(),
"supplier_id":$('#supplierInput').attr("name"),
"wood_specie_id":$('#woodSpecie').attr("name"),
"lines":plank_data,
"scaled_by":$('#tallyScaled').val().toUpperCase(),
"tallied_by":$('#tallyTallied').val().toUpperCase(),
"checked_by":$('#tallyChecked').val().toUpperCase(),
"total_bdft":$('#tallyTotal').val(),
"final":"N"
};
alert('this is the datajson from add : ' + JSON.stringify(dataJSON));
$.ajax({
type: 'POST',
data: dataJSON,
url: 'processjson2.php?' + $.param({path:'update/tallyHdr',json:JSON.stringify(dataJSON)}),
dataType: primeSettings.ajaxDataType,
success: function(data) {
if ('error' in data)
{
showMessage('ERROR: ' + data["error"]["msg"]);
}
else{
$('#tblTallyHdr').trigger('reloadGrid');
}
}
});
这是我的.php代码(感谢SMka):
<?php
//this is already running code but could not accept large query string
$data_url = http_build_query (array('json' => $_REQUEST["json"]));
$data_len = strlen ($data_url);
echo file_get_contents("http://localhost:8001/" . $_REQUEST["path"], false, stream_context_create(
array (
'http' => array(
'method'=>'POST',
'header' => "Connection: close\r\nContent-Length: $data_len\r\n",
'content'=>$data_url
)
)
));
?>
我的问题是,为什么我仍然不能使用post
将许多数据发送到我的Web服务? 我真的在想,使用post
方法可以帮助我将许多请求发送到Web服务,那么我的代码有什么问题?
编辑我将代码更改为此
$.ajax({
type: 'POST',
data: dataJSON,
url: 'processjson2.php?',
dataType: primeSettings.ajaxDataType,
success: function(data) {}
})
而我的输出网址是http://localhost/jQueryStudy/RamagalHTML/processjson2.php?path=update/tallyHdr
,这给了我一个Session ID not found
的错误Session ID not found
。 我发现我的datajson没有发送到我的网址webservice datajson不存在。
您的问题在以下代码行中:
url: 'processjson2.php?' + $.param({path:'update/tallyHdr',json:JSON.stringify(dataJSON)}),
此行将数据附加到您要向其发布请求的URL。 如果数据过多,URL将使Web服务器不堪重负。 (基本上,您仍在执行GET请求。)
而是用以下内容替换该行。
url: 'processjson2.php',
然后将path:'update/tallyHdr'
到您的dataJSON对象,看看是否可行。
我现在有我的答案。 当她/他说这句话时,Cheeken是正确的 :
url: 'processjson2.php?' + $.param({path:'update/tallyHdr',json:JSON.stringify(dataJSON)}),
是问题,我正在执行get
请求。 我应该用它代替它:
url: 'processjson2.php?',
因此,我应该将dataJSON放在哪里? 这是我使用的运行代码:
$.ajax({
type: 'POST',
data: $.param({json:(JSON.stringify(dataJSON))}),
url: 'processjson2.php?path=update/tallyHdr',
dataType: primeSettings.ajaxDataType,
success: function(data) {
if ('error' in data)
{
showMessage('ERROR: ' + data["error"]["msg"]);
}
else{
$('#tblTallyHdr').trigger('reloadGrid');
}
}
});
这行$.param({json:(JSON.stringify(dataJSON))})
将我的dataJSON转换为查询字符串,而json是保存我的json数据的变量。 这就是我要用ajax运行程序代码的所有更改
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.