下拉菜单,使用AJAX和DOM处理API
Dropdown menu with processing API with AJAX and DOM
我正在从API获取数据,但它没有出现在我的下拉菜单中。
如果我回显?act=showprovince
,结果在那里。
html
显示<head>
<link rel="stylesheet" type="text/css" href="css/normalize.css">
<link rel="stylesheet" type="text/css" href="css/skeleton.css">
<script type="text/javascript" src="js/jquery.min.js">
</script>
<script type="text/javascript" src="js/script.js"></script>
<title>Penggunaan API RajaOngkir | IDMore</title>
<body>
<div class="container">
<div class="row">
<br />
<div class="twelve columns">
<h1>Hitung Ongkos Kirim</h1>
</div>
</div>
<div class="row">
<div class="twelve columns">
<h5>Masukan Data</h5>
</div>
</div>
<div class="row">
<div class="two columns">Asal
<br />
<select id="oriprovince">
<option>Provinsi</option>
</select></div>
<div class="two columns">
<br />
<select id="oricity">
<option>Kota</option>
</select>
</div>
<div class="two columns">Tujuan
<br />
<select id="desprovince">
<option>Provinsi</option>
</select></div>
<div class="two columns">
<br />
<select id="descity">
<option>Kota</option>
</select>
</div>
<div class="two columns">Layanan
<br />
<select id="service">
<option>JNE</option>
<option>POS</option>
<option>TIKI</option>
</select></div>
<div class="two columns">
<br />
<button id="btncheck">Cek Harga</button>
</div>
</div>
<div class="row">
<div class="twelve columns">
<h5>Harga</h5>
</div>
<hr />
<table class="twelve columns">
<tr>
<th>Servis</th>
<th>Deskripsi Servis</th>
<th>Lama Kirim (hari)</th>
<th>Total Biaya (Rp)</th>
</tr>
<span id="resultsbox">
<tr>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
<tr>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
</span>
</table>
</div>
</div>
</body>
</link>
</link>
</head>
process.php
require_once('idmore.php');
$IdmoreRO = new IdmoreRO();
if(isset($_GET['act'])):
switch ($_GET['act']) {
case 'showprovince':
$province = $IdmoreRO->showProvince();
echo $province;
break;
default:
# code...
break;
}
endif;
idmore.php
class IdmoreRO{
public function __construct()
{
}
//menampilkan data provinsi
public function showProvince()
{
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "http://rajaongkir.com/api/starter/province",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"key: 3f01f13ce2b42ba983ad3f3bc4852f84"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
$result = 'error';
return 'error';
} else {
return $response;
}
}
}
script.js
$(document).ready(function(){
loadProvinsi('#oriprovince');
loadProvinsi('#desprovince');
$('#oriprovince').change(function(){
alert('yussan');
});
$('#desprovince').change(function(){
alert('yussan');
});
});
function loadProvinsi(id){
$('#oricity').hide();
$('#descity').hide();
$(id).html('loading...');
$.ajax({
url:'process.php?act=showprovince',
dataType:'json',
success:function(response){
$(id).html('');
$province = '';
$.each(response['rajaongkir']['results'], function(i,n){
province = '<option value="'n['province_id']'">'+n['province']+'</option>';
province = province + '';
$(id).append(province);
});
},
error:function(){
$(id).html('ERROR');
}
});
}
我检查了你的代码,你所有的问题都在这一行JavaScript函数loadProvinsi()
:
province = '<option value="'n['province_id']'">'+n['province']+'</option>';
您错过了两个'+'符号!
所以正确的代码应该是:province = '<option value="'+n['province_id']+'">'+n['province']+'</option>';
剩下的代码看起来没问题,通过这两个小的改变下拉菜单显示了省份
如果您可能需要完整的javascript函数loadProvinsi()
将看起来像这样:
function loadProvinsi(id){
$('#oricity').hide();
$('#descity').hide();
$(id).html('loading...');
$.ajax({
url:'process.php?act=showprovince',
dataType:'json',
success:function(response){
$(id).html('');
$province = '';
$.each(response['rajaongkir']['results'], function(i,n){
province = '<option value="'+n['province_id']+'">'+n['province']+'</option>';
province = province + '';
$(id).append(province);
});
},
error:function(){
$(id).html('ERROR');
}
});
}
相关文章:
- 如何让React JS点击处理程序在执行时更新DOM
- 在Node Webkit应用程序中从DOM单击按钮时运行批处理文件
- casper.waitForSelector无法处理动态DOM操作
- 直接在DOM事件处理程序中调用作用域函数的最短方法是什么
- Meteor - 从另一个模板事件处理程序访问 DOM 元素
- 测试 JavaScript Zombie 事件处理程序或 DOM 元素
- 听任意DOM修改-对DOM进行哈希处理
- Android原生浏览器中的dom处理时间太长
- 如何删除DOM事件处理程序的重复JavaScript代码
- 当附加到DOM时,可以将变量与字符串连接起来吗?它能处理逃跑吗
- 当我们使用基于标记的DOM就绪执行时,如何处理js函数
- 如何获取javascript/dom加载和处理时间的指标
- 从非DOM对象内部调度和处理自定义事件
- 除了用于DOM之外,浏览器中的事件处理API
- 为什么 DOM 事件处理程序中的嵌套函数会修复“this”绑定
- 如何在 Javascript 中处理同一 dom 上的 click 和 dblclick 事件绑定
- DOM 处理和 JavaScript 放置
- 下拉菜单,使用AJAX和DOM处理API
- 级别 2 DOM 处理不起作用的 JavaScript
- html5 msie javascript让DOM处理在msie中工作