javascript - 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 类型!
解决方案
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>
推荐阅读
- ruby - 仅针对特定模型覆盖 ActiveRecord::Relation::CollectionProxy
- html - 不能在 django 模板中使用多个引导模式
- powerpoint - 将 aws 图标添加到 powerpoint 库
- linux - 如何批量创建 ssh 信任?
- jquery - 表单加载中下拉列表中的jQuery defaultValue
- php - 如何在将 URL 传递给 htaccess 文件中的处理程序之前去除 URL 的开头
- c# - 如何从不同的方法访问 Main() 中的变量
- spring - LDAP 查询产生以“ldap://”开头的条目
- c# - 我怎样才能让这个调用线程保存?
- java - JdbcTemplate 映射器空值