Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.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 使用AJAX发布不起作用,可以';无法获得$的POST值_Php_Jquery_Ajax - Fatal编程技术网

Php 使用AJAX发布不起作用,可以';无法获得$的POST值

Php 使用AJAX发布不起作用,可以';无法获得$的POST值,php,jquery,ajax,Php,Jquery,Ajax,所以我有个小问题。我正在一个网站上工作,这是我第一次使用ajax发布到页面。我有一个表单,上面有一个提交按钮和一个链接。当按下提交按钮时,一切正常,但用户应该能够点击链接绕过页面,但我仍然需要一些信息发布到该页面,所以我在谷歌上搜索了ho,没有提交按钮,出现了ajax,所以我想我应该试一试。它似乎不起作用。这是我正在使用的代码 $('#chkEndAccDate').click(function(evt){ alert("before ajax"); var totalcost

所以我有个小问题。我正在一个网站上工作,这是我第一次使用ajax发布到页面。我有一个表单,上面有一个提交按钮和一个链接。当按下提交按钮时,一切正常,但用户应该能够点击链接绕过页面,但我仍然需要一些信息发布到该页面,所以我在谷歌上搜索了ho,没有提交按钮,出现了ajax,所以我想我应该试一试。它似乎不起作用。这是我正在使用的代码

 $('#chkEndAccDate').click(function(evt){
    alert("before ajax");
    var totalcost = $('#total_cost').val();
$.ajax({

    type: "POST",
    url: "http://sandbox.phareconsulting.com/complete_order.php",
    `enter code here`data: {cost : totalCost}
       });
   alert("after ajax");
});
这段代码在我尝试时也不起作用 $(文档)。在('click','chkEndAccDate',函数()上{ 成本=$('总成本').val(); $邮政编码(“, {cost:cost},函数(d){ 警报(“post”); }); });

现在在php文件中,我只是在做
print\r($\u POST)但post数组为空。谁能帮我一下吗。我认为我们中的一些人只是没有正确理解ajax。我以为我做到了,但我无法让它发挥作用

多谢各位

用这个
数据:{cost:cost}
用于发送数据

使用此代码:

$(document).on('click','#chkEndAccDate',function(){
cost = $('#total_cost').val(); 
$.post("http://sandbox.phareconsulting.com/complete_order.php",
{cost: cost},function(d){
});
});

这应该是正确的语法:

data: "{'cost':'" + cost+ "'}"

s、 d和Thiefmaster已经编写了正确的语法,但是,最好更改变量的名称以避免混淆

var totalCost = $('#total_cost').val();
然后使用:

data: {cost : totalCost}

使用发送ajax表单是一个好主意,这将自动获取数据并将其发送到表单操作url。
这个插件还提供了控制发送过程的函数。这是一个例子:

    var bar = $('#progressBar');
    var percent = $('#percent');
    var status = $('#status');
    $('#form-id').ajaxForm({
        beforeSend: function() {
            //validate the data 
            status.empty();
            var percentVal = '0%';
            bar.width(percentVal);
            percent.html(percentVal);
        },
        uploadProgress: function(event, position, total, percentComplete) {
           // draw a progress bar during ajax request
            var percentVal = percentComplete + '%';
            bar.width(percentVal);
            percent.html(percentVal);
        },
        complete: function(xhr) {
            bar.width("100%");
            percent.html("100%");

        }
    });
进度条的Html:

    <div id="progress">
      <div id="bar"></div >
      <div id="percent">0%</div >
    </div>

数据:'cost='+cost
应该是
数据:{cost:cost}
-否则您必须注意正确编码值。您还应该使用
var cost=..
而不是
cost=..
来避免创建全局。我做了上述更改,但仍然打印出一个空数组,因此不能发布数据。请尝试添加内容类型:application/x-www-form-urlencodedwhere我可以在哪里做^^^^我更改为该类型,但仍然不起作用因为某种原因?-1因为这不能解决OP的问题。无论成本包含何种类型的无效数据,他至少会收到一个空值,但根本不会收到POST数据。我确实尝试了上面的代码,但仍然得到一个空数组打印输出?put alert();在代码中,检查该函数是否执行。我在$.ajax调用前后放置了一个alert(),before alert()会激发,但after alert()不会激发。不,只是不。如果他想要JSON负载,这将由于单引号而无效。但是,由于他想要正常的POST数据,他需要传递一个urlencoded字符串或更好的对象,就像我在对这个问题的评论中建议的那样。我确实更改了我的代码,使用了数据:{cost:cost},并使用了var来避免一个全局变量,但在应该发布到的页面上,我仍然只能在我的print\r($\u POST)上获取数组()我真的不明白为什么没有发布信息。您可能还需要检查php脚本中的post变量是否与您在数据数组中发送的名称匹配。i、 e.
$\u POST['cost']
.Dolchio print\u r()将获取其中的所有数据。将cost更改为totalCost将永远无法解决问题,因为jquery不会被名称xd所迷惑
    #progress { position:relative; width:400px; border: 1px solid #ddd; padding: 1px; border-radius: 3px; }
    #bar { background-color: #B4F5B4; width:0%; height:20px; border-radius: 3px; }
    #percent { position:absolute; display:inline-block; top:3px; left:48%; }