簡體   English   中英

我的POST數據中出現HTTP錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM