Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的PHP无法将数据发布到我的url_Php_Ajax_Post - Fatal编程技术网

我的PHP无法将数据发布到我的url

我的PHP无法将数据发布到我的url,php,ajax,post,Php,Ajax,Post,我试着寻找这个,但我就是找不到任何可以解决我问题的方法。我想生成一个类似这样的url,以向我的Web服务发送请求: http://localhost/jQueryStudy/RamagalHTML/processjson3.php? 路径=更新%2FtallyHdr&json= {“SessionID”:“hhuc3jt1um5gv7ke320bw7ejg97i4qz”,“操作”:“添加”, “交易日期”:“2011-7-29”,“供应商id”:“1000000108”,“木材品种id”:“1”

我试着寻找这个,但我就是找不到任何可以解决我问题的方法。我想生成一个类似这样的url,以向我的Web服务发送请求:

http://localhost/jQueryStudy/RamagalHTML/processjson3.php?
路径=更新%2FtallyHdr&json=
{“SessionID”:“hhuc3jt1um5gv7ke320bw7ejg97i4qz”,“操作”:“添加”,
“交易日期”:“2011-7-29”,“供应商id”:“1000000108”,“木材品种id”:“1”,
“线条”:[{“木板编号”:“7”,“厚度”:“5”,“宽度”:“8”,“长度”:“8”,“数量”:“1”,“木板英尺”:“26.67”,“木材分类id”:“1”,“价格”:“15”}],“缩放单位”:“WER”,“计数单位”:“我们”,“检查单位”:“我们”,“总计”:“580.00”,“最终”:“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'); 
      }
    }
  });
My.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
        )
    )
));

如果希望将所有数据作为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'); 
      }
    }
  });

有关更多信息,请参见本页末尾的示例:

POST
信息在URL中的发送方式与
GET
不同。当你说你在URL中看不到它时,你是如何观察它的?在firebug中,我可以在控制台中看到我的URL缺少我需要的数据。我还在我的delphi程序中进行跟踪,在那里我编写了mmy Webserve代码。我的json请求为空。这是我以前的代码,但由于可能会向我的Web服务发送许多请求数据,因此由于查询字符串的限制,使用
get
方法将不会执行它。这就是为什么我别无选择,只能使用
POST
方法。您应该能够使用Firebug的Net选项卡查看POST数据。你能确认没有发送POST数据吗?Shannethat,它正在工作。我只是将我的数据更改为
数据:$.param({json:(json.stringify(dataJSON))}),
。感谢您的帮助,并为我的json提供了一个变量名的提示。WWAAHHH,我很高兴,因为我已经带着这个问题两天了。。。