我有一个非常奇怪的问题,无法弄明白。我正在使用AJAX / PHP并通过ajax调用从用户交互的mysql数据库中获取数据。一切都很好,没有任何问题。但是只有一个问题是持久存在的是当在mysql数据库中找不到数据时,则不会从服务器ajax文件返回用户友好的消息 - 一部分有效,另一部分无效。这是我的代码 -
这是我的第一个表格所在的文件(完整代码不在那里;只有js代码) -
<script type="text/javascript">
$(document).ready(function(){
$("#selcustomer").change(function(){
var customers_id = $(this).val();
if(customers_id > 0)
{
$.ajax({
beforeSend: startRequest,
url: "ajax/ajax.php",
cache: false,
data: "customers_id="+customers_id,
type: "POST",
dataType: "json",
success: function(data){
if(data != "No result found.")
{
$("#img_preloader").hide();
$("#error").html('');
// $("#txtfname").val(data.fname);
// $("#txtlname").val(data.lname);
for(var key in data)
{
document.getElementById("txt"+key).value = data[key];
}
}
else
{
$("#img_preloader").hide();
$("#error").html(data);
$("input").each(function(){
$(this).val('');
});
}
}
});
}
else
{
$("#error").html('');
$("input").each(function(){
$(this).val('');
});
}
});
});
function startRequest()
{
$("#img_preloader").show();
}
</script>
这是我的服务器端ajax文件(php文件),它与数据库交互 -
<?php
include("../includes/db-config.php");
if(isset($_POST["customers_id"]))
{
$customers_id = $_POST["customers_id"];
$query = "SELECT * FROM `tb_customers` WHERE `customers_id` = '$customers_id'";
$rs = mysql_query($query);
if(mysql_num_rows($rs) > 0)
{
$row = mysql_fetch_array($rs);
$customers_first_name = $row['customers_first_name'];
$customers_last_name = $row['customers_last_name'];
$customers_email_id = $row['customers_email_id'];
$customers_phone_no = $row['customers_phone_no'];
$customers_address_line_1 = $row['customers_address_line_1'];
$customers_address_line_2 = $row['customers_address_line_2'];
$customers_country = $row['customers_country'];
$data = array('fname' => $customers_first_name, 'lname' => $customers_last_name, 'emailid' => $customers_email_id, 'phoneno' => $customers_phone_no, 'addressline1' => $customers_address_line_1, 'addressline2' => $customers_address_line_2, 'country' => $customers_country);
echo json_encode($data);
}
else
{
echo "No result found.";
}
}
?>
if部分工作正常,但是当数据库中没有找到数据时,else部分没有将数据发送回jQuery代码。我检查了浏览器控制台并看到else部分正在返回响应,但jquery代码成功:$ .ajax的一部分未运行 - 既不在if,也不在else中,也不在if / else之外。我的意思是说,当在mysql数据库中找不到数据时,数据未成功发出简单警报。但是,当我删除ajax / php文件中的所有数据并简单地写入123然后警报带有123但不是当实际代码存在时。你能告诉我这个奇怪的问题背后的问题是什么?
答案 0 :(得分:1)
您的数据类型在AJAX调用中设置为JSON,因此返回值必须是有效的JSON。
当您遇到else条件时,您将返回不是JSON的内容
试试这个 -
else
{
echo json_encode("No result found.");
}
或更灵活的东西 -
else{
echo json_encode(Array("err"=>"No result found."));
}
修改 - 强>
...但是当我删除ajax / php文件中的所有数据并简单地写 123然后提醒123来......
这是因为123
(数字)是valid JSON。而不是123
,请尝试编写No result
并抛出错误,因为No result
(字符串)需要引号(使用json_encode
时要小心)。< / p>