мой PHP не может публиковать данные на мой URL - PullRequest
2 голосов
/ 29 июля 2011

Я пытаюсь найти информацию об этом, но я не могу найти ничего, что могло бы решить мою проблему.Я хочу создать URL, похожий на этот, чтобы отправить запрос на мой веб-сервис:

http://localhost/jQueryStudy/RamagalHTML/processjson3.php? path=update%2FtallyHdr&json= {"SessionID":"hHuCG3Jt1um5gV7kE320Bw7EjG97I4qZ","operation":"add", "transaction_date":"2011-7-29","supplier_id":"10000000108","wood_specie_id":"1", "lines":[{"plank_number":"7","thickness":"5","width":"8","length_t":"8","quantity":"1","board_foot":"26.67","wood_classification_id":"1","price":"15"}],"scaled_by":"WER","tallied_by":"WE","checked_by":"WE","total_bdft":"580.00","final":"N"}

Вот мой текущий код 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?path=update/tallyHdr',
    dataType: primeSettings.ajaxDataType,
    success: function(data) {
      if ('error' in data)
      {
        showMessage('ERROR: ' + data["error"]["msg"]);
      }
      else{
        $('#tblTallyHdr').trigger('reloadGrid'); 
      }
    }
  });

Мой код .php такой:

<?php
   $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
        )
    )
));

Evrytime я запускаю свою программу, URL-адрес только это http://localhost/jQueryStudy/RamagalHTML/processjson2.php?path=update/tallyHdr, данные не были опубликованы, что делает мой запрос не выполненным.Пожалуйста помоги мне с этим.Я не знаю, как исправить мой php.

1 Ответ

2 голосов
/ 29 июля 2011

Если вы хотите, чтобы все ваши данные отправлялись как часть URL-адреса, вам следует использовать GET, а не POST.

Поэтому можно покончить со свойством data и добавить все к запросу.URL:

$.ajax({
    type: 'GET',
    url: 'processjson2.php?path=update/tallyHdr&json='+dataJSON,
    dataType: primeSettings.ajaxDataType,
    success: function(data) {
      if ('error' in data)
      {
        showMessage('ERROR: ' + data["error"]["msg"]);
      }
      else{
        $('#tblTallyHdr').trigger('reloadGrid'); 
      }
    }
  });

Если вы должны использовать POST, то вам просто нужно указать имя переменной для вашего json:

$.ajax({
    type: 'POST',
    data: "json="+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'); 
      }
    }
  });

Для получения дополнительной информации см. Примеры кконец страницы: http://api.jquery.com/jQuery.ajax/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...