我是JavaScript新手。我编写了以下函数,将数据发布到PHP页面,然后返回结果。该函数工作正常,但有时无法获得结果;我相信这可能是因为它没有等待响应。
我尝试为JS寻找等待/延迟功能,但找不到。
我发现的一种解决方案建议使用ajax。我试图做到这一点,但我无法使其正常工作。也许我还必须更改我的PHP代码?
我的JS代码
<script>
$('#room_no').change(function () {
var id = "<?php echo intval(isset($_GET['id'])); ?>";
var str = "<?php echo $room_no; ?>"; // "A string here"
alert(str);
if (id == 1) {
} else {
//Selected value
var inputValue1 = $(this).val();
var selected_unit_no = $('#ddlUnitNo').val();
//Ajax for calling php function
$.post('room_no_2.php', {
dropdownValue: inputValue1,
dropdownValue2: selected_unit_no
}, function (data) {
var select = document.getElementById("room_no");
var rented_as_rooms = data.split(".")[0];
var rented_room_no = data.split(".")[1];
var number_of_rooms_in_unit = data.split(".")[2];
var tenant_name = data.split(".")[3];
var tenant_rid = data.split(".")[4];
var tenant_monthly_rent = data.split(".")[5];
if (rented_as_rooms == 0) {
document.getElementById("txtRentName").value = '';
alert('Selected Room Is Empty');
$('#room_no option')[0].selected = true;
} else {
// select.innerHTML = "";
document.getElementById("txtRentName").value = tenant_name;
document.getElementById("txtRent").value = tenant_monthly_rent;
$("#hdnRentedId").val(tenant_rid);
}
//do after submission operation in DOM
});
}
});
</script>
我的PHP代码
<?php
$resultA = mysqli_query($link, "SELECT u.uid , u.floor_no , u.unit_no , u.rented_as_rooms, u.unit_room_no, u.electric_meter_number, u.electric_meter_type,u.sub_electric_meter_no, u.water_meter_no, u.branch_id , u.status , u.added_date, r.rid, r.r_name , r.r_email , r.r_contact , r.r_address , r.r_nid , r.r_floor_no , r.r_unit_no , r.r_unit_room_no, r.r_advance , r.r_rent_pm , r.r_date , r.r_gone_date , r.r_password , r.image , r.r_status , r.r_month , r.r_year , r.branch_id , r.added_date FROM tbl_add_unit u LEFT JOIN tbl_add_rent r ON r.r_unit_no = u.uid where u.branch_id = " . (int)$_SESSION['objLogin']['branch_id'] . " AND r.r_unit_room_no =" . $_POST['dropdownValue'] . " AND u.uid =" . $_POST['dropdownValue2'] . " order by uid ASC") ;
if (! $resultA){
echo $unit_room_no = '';
} else {
while ($row1 = mysqli_fetch_array($resultA))
{
echo $row1['rented_as_rooms'].'.'.$row1['r_unit_room_no'].'.'.$row1['number_of_rooms_in_unit'].'.'.$row1['r_name'].'.'.$row1['rid'].'.'.$row1['r_rent_pm'];
}
}
?>
这是我编写的ajax代码。我使用了警报(数据)来检查是否收到了任何响应,但没有。
$.ajax({
url: 'room_no_2.php',
type: 'POST',
data: 'dropdownValue=' + inputValue1 + '&dropdownValue2=' + selected_unit_no ,
dataType: 'json',
success: function(data) {
alert('ajax completed. Response: '+data);
}
}
答案 0 :(得分:0)
在http://api.jquery.com/jquery.ajax/上说“ dataType:“ jsonp”请求不支持同步操作。”尝试将dataType更改为html。
在成功函数旁边添加一个错误函数:
$.ajax({
type: 'POST',
data: {var1:valuevar1,var2:valuevar2,etc:etc},
async: true,
url: "urlforyourPHPfile",
success: function(data) {
//things to do on success
},
error: function(data){
alert("Error");
},
contentType: "application/x-www-form-urlencoded;charset=ISO-8859-15",
dataType: 'html'
});