Javascript 使用JSON和PHP创建表单。根据select的值进行过滤
我有一个表单问题,我需要用PHP获取JSON的数据(因为它是一个api,我必须隐藏请求url) 我有三个选择:Javascript 使用JSON和PHP创建表单。根据select的值进行过滤,javascript,php,jquery,json,ajax,Javascript,Php,Jquery,Json,Ajax,我有一个表单问题,我需要用PHP获取JSON的数据(因为它是一个api,我必须隐藏请求url) 我有三个选择: <select name="state" id="state"> <option value="" select>STATE</option> </select> <select name="city" id="city"> &l
<select name="state" id="state">
<option value="" select>STATE</option>
</select>
<select name="city" id="city">
<option value="" select>CITY</option>
</select>
<select name="company" id="company">
<option value="" select>COMPANY</option>
</select>
我需要的是:
1-选择#状态:显示所有状态(不重复)
2-选择#城市:根据上述所选状态显示所有城市
3-选择#公司:根据上面选择的城市显示所有公司
我该怎么办?
我想我应该使用ajax请求嵌入json的php文件,但是我不知道怎么做
重要提示:我无法更改JSON的结构,因为它是一个api,我无法对其进行修改
有没有善良的灵魂来帮我
谢谢。这应该让您开始:
<html>
<body>
<select name="state" id="state">
<?php
$json = file_get_contents('test.js');
$data = json_decode($json, true);
foreach($data['companies'] as $entry) {
echo "<option value=".$entry['company']."select>".$entry['company']."</option>";
}
?>
</select>
</body>
</html>
如果要进行ajax调用并根据选择填充数据,这可能会有所帮助:
var resp_data;
$.ajax({
url:"your_php_page_url.php", //it can be even third party api url like google
success:function(e){
//you will get your json data here
resp_data = e;
//Now iterate through your data to fill state dropdown
var state = e.companies;
var d = [];
$.each(b, function(a,c){
if(($.inArray(c.state,d)) == -1){
$('#state').append('<option value="'+c.state+'">'+c.state+'</option>')
d.push(c.state);
}
});
}, //hope you are not posting any data, so I am skipping that part
});
var响应数据;
$.ajax({
url:“your_php_page_url.php”//它甚至可以是像google这样的第三方api url
成功:职能(e){
//您将在这里获得json数据
resp_data=e;
//现在遍历数据以填充状态下拉列表
var状态=e公司;
var d=[];
$。每个(b,函数(a,c){
if($.inArray(c.state,d))=-1){
$('#state')。附加(''+c.state+'')
d、 推(c.state);
}
});
},//希望您没有发布任何数据,因此我跳过该部分
});
这就结束了你们州的人口。现在,根据状态下拉列表更改,您必须填充数据。如果您的响应相同,则无需再次调用ajax,只需将响应保存在变量中并重用它即可。对于城市,您可以这样做:
$('#state').on('change',function(){
var state = $('#state option:selected').val(); //gives you value of state selected.
var op_data = resp_data.companies;
var d = [];
$.each(op_data, function(a,c){
if(($.inArray(c.city,d)) == -1 && c.state == state){
$('#city').append('<option value="'+c.city+'">'+c.city+'</option>')
d.push(c.city);
}
});
});
$('#state')。在('change',function()上{
var state=$(“#state option:selected”).val();//提供所选状态的值。
var op_数据=相应的公司数据;
var d=[];
$。每个(op_数据,函数(a,c){
if($.inArray(c.city,d))=-1&&c.state==state){
$(“#城市”)。附加(“”+c.city+“”)
d、 推动(c.city);
}
});
});
你的公司也是如此。你可以自己为公司试一试,就像那样!!!如果你有什么事,请告诉我
此代码可以进行更多优化。只是我觉得我应该写得详细些
干杯 请把你的问题翻译成英语,你也可以在这里问同样的问题。但是为了学习,你应该试试英语。对不起,我没有注意到我不在葡萄牙语区。。我已经翻译了这篇文章。
var resp_data;
$.ajax({
url:"your_php_page_url.php", //it can be even third party api url like google
success:function(e){
//you will get your json data here
resp_data = e;
//Now iterate through your data to fill state dropdown
var state = e.companies;
var d = [];
$.each(b, function(a,c){
if(($.inArray(c.state,d)) == -1){
$('#state').append('<option value="'+c.state+'">'+c.state+'</option>')
d.push(c.state);
}
});
}, //hope you are not posting any data, so I am skipping that part
});
$('#state').on('change',function(){
var state = $('#state option:selected').val(); //gives you value of state selected.
var op_data = resp_data.companies;
var d = [];
$.each(op_data, function(a,c){
if(($.inArray(c.city,d)) == -1 && c.state == state){
$('#city').append('<option value="'+c.city+'">'+c.city+'</option>')
d.push(c.city);
}
});
});