首页 > 解决方案 > AJAX 拒绝向 PHP 发送变量(检查所有其他答案)

问题描述

这是一个回答很多的问题。但是在检查了所有其他答案之后,我仍然无法解决我的问题。

这个JS函数以前可以工作,突然停止工作

JS

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js" data-pagespeed-orig- type="text/javascript"></script>
<script>
$('document').ready(function(){
$('select[name="Developer"],[name="City"],[name="PossesionDate"],[name="PropertyType"],[name="Cost"]').change(function()
      {
        filtproj();
      });
   });  

    function filtproj(){
    var dev=$('select[name="Developer"]').val();
    var city=$('select[name="City"]').val();
    var podate=$('select[name="PossesionDate"]').val();
    var ptype=$('select[name="PropertyType"]').val();
    var cost=$('select[name="Cost"]').val();
        alert(dev);
        $.ajax({
            type:'POST',
            url:'filtprojs.php',
            data:{dev:dev,city:city,podate:podate,ptype:ptype,cost:cost},
            success:function(filtres){
                console.log(dev);
                alert(filtres);
                $('.newp').html(filtres);
            },
            error: function() {
                  alert("error");
              }
        });
    }
</script>

PHP 文件 filtprojs.php 返回空的 POST 值。在 Ajax 显示正确的变量值之前警告变量。即使从“成功”函数内部在 console.log 中检查,它也会显示正确的变量值。

对于我的生活,我无法理解为什么它没有发布到 PHP 文件中。

我已将 filtprojs.php 中的所有代码替换为

var_dump($_POST)

这输出 0

// 添加下面的行,因为问题是“已关闭”,表示这里没有具体问题!

这里的具体问题是 - 为什么 JS 变量没有被传递到文件 filtprojs.php ?

更新

它以 GET 类型发送变量。但不是 POST 类型!

标签: javascriptphpajaxvariablespost

解决方案


JavaScript 代码似乎没问题。下面的代码片段是一个 PoC,表明它基本上可以工作。我用一个公开的测试站点替换了您的“filterprojs.php”。

const sels={dev:"Developer",city:"City",podate:"PossesionDate",ptype:"PropertyType",cost:"Cost"};
$('document').ready(function(){

// quickly create some select elements ...
$("form").html('<select name="'+Object.entries(sels).map(([k,v])=>v+'">'
      +[...Array(5)].map((o,i)=>'<option>'+v+i+'</option>').join('')).join('</select>\n<select name="')+'</select>')

$('select[name="Developer"],[name="City"],[name="PossesionDate"],[name="PropertyType"],[name="Cost"]').change(filtproj);
});  

function filtproj(){
  $.ajax({
    type:'POST',
     url:'https://jsonplaceholder.typicode.com/users',
    data:Object.entries(sels).reduce((a,[k,v])=>(a[k]=$('select[name='+v+']').val(),a),{}),
 success:function(res){ console.log("response from POST request:",res); },
   error: function()  { console.log("POST error"); }
  });
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form></form>


推荐阅读