Javascript 未从ajax函数调用PHP脚本
这是一个很难回答的问题 我的javascript函数(我定义的knockout.js模型的一部分): 数据库_connection.php的内容:Javascript 未从ajax函数调用PHP脚本,javascript,php,ajax,knockout.js,Javascript,Php,Ajax,Knockout.js,这是一个很难回答的问题 我的javascript函数(我定义的knockout.js模型的一部分): 数据库_connection.php的内容: <?php echo "this is called"; $db = new MySqli('localhost', 'username', 'password', 'database'); $activities = $db->query("SELECT * FROM MainActivity"); $a
<?php
echo "this is called";
$db = new MySqli('localhost', 'username', 'password', 'database');
$activities = $db->query("SELECT * FROM MainActivity");
$activities_r = array();
while($row = $activities->fetch_array()){
$val = $row['mActivityID'];
$act = $row['Name'];
$activities_r[] = array('val'=>$val, 'act' => $act);
}
echo json_encode($activities_r);
?>
php是正确的,因为如果我通过浏览器直接访问这个文件,它会正确地显示数据库表中的结果
但是,当通过loadData
功能执行时,我会收到两个警报:
1. <代码>“调用loadData”
2. <代码>“服务器调用错误”
没有执行database_connection.php的第一行,因为我看不到echo的结果,所以这意味着没有调用脚本
我是否错误地使用了
ajax
函数?您需要在php文件中添加标题,因为在ajax调用中您的数据类型是json
header('Content-Type: application/json');
echo json_encode($activities_r);
您的AJAX请求包含:
dataType: "json"
这意味着,如果服务器返回状态为200OK的无效JSON,那么jQuery将触发错误函数
使用以下代码确保响应为JSON格式。。(PHP vVersion)
注意:空响应也被视为无效JSON;您可以返回{}或null,将其验证为JSON您需要设置请求的
类型
,并且可以删除数据类型
。同样在success
回调中,它是一个额外的括号。检查它:
self.loadData = function(){
alert("loadData got called");
$.ajax({
url: 'database_connection.php',
type : 'GET',
// dataType: 'json',
sucess: function(data){ //json string of records returned from server
alert('success from server call');
},
error: function(){
alert('error from server call');
}
});
};
您使用ajax函数的方式看起来不错。你确定
database\u connection.php
可以作为调用loadData函数的相对部分那样调用吗?@DanBelden我不确定这是否有助于OP回答他的问题。你检查网络调用了吗?你在ajax调用中缺少类型。尝试澄清它是获取哪种类型的请求,POST&a输入错误success
回调哪个应该是success
。尝试了这个。我仍然在loadData函数中得到错误调用。然而,现在当我直接从浏览器打开php文件时,我得到了以下错误:警告:无法修改标题信息-标题已由发送(输出开始于/path/to/file/database\u connection.php:2)
。删除php文件中所有“echo”或“header”之前的打印我很高兴听到您尝试了这一点。我仍然在loadData函数中得到错误调用。但是,现在当我直接从浏览器打开php文件时,会出现以下错误:警告:无法修改标题信息-标题已由发送(输出开始于/path/to/file/database_connection.php:2)
尝试了此操作。好消息是我从服务器调用中获得了成功
。不幸的是,我现在遇到两个问题:1。这进入无限循环。只要我按下ok
按钮查看success
消息,它就会再次弹出。必须强制退出浏览器才能结束此无限循环。2.此页获取的数据为空。[我试图访问的表中只有两行。]
header('Content-Type: application/json');
self.loadData = function(){
alert("loadData got called");
$.ajax({
url: 'database_connection.php',
type : 'GET',
// dataType: 'json',
sucess: function(data){ //json string of records returned from server
alert('success from server call');
},
error: function(){
alert('error from server call');
}
});
};