[英]Retrieve Data From PHP using JQuery
我不确定我做错了什么,但我有一个PHP函数需要从中检索一些数据。
我正在使用JQuery 1.11执行ajax函数
$(document).ready(function() {
$('#butt_example').on('click', function() {
$.ajax({
url : 'scripts/functions.php',
type : 'GET',
dataType : 'json',
data : {
'action': 'test'
},
success: function(result) {
var la_result = JSON.parse(result);
console.log(la_result);
},
error: function(log) {
console.log(log.message);
}
});
});
});
然后我用一个简单的php函数替换了它,仅用于测试
<?php
if(isset($_GET["action"])) {
$arr = array();
$arr[0] = "test";
$arr[1] = "passed";
header('Content-Type: application/json; charset=utf-8');
echo json_encode($arr);
}
?>
但是,当我单击按钮执行代码时,我看到控制台日志结果未定义。
为什么是这样?
更新
在Mike发表评论之后,我意识到它实际上是在错误情况下执行控制台日志。
所以它在某处失败了,我不确定为什么
您确定AJAX调用能够到达PHP函数吗?
尝试此操作。在.php文件中首先执行此操作
这将产生类似于codeigniter或任何其他相对框架的base_url()。
function url(){
return sprintf(
"%s://%s%s",
isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http',
$_SERVER['SERVER_NAME'],
$_SERVER['REQUEST_URI']
);
}
<script>
var url="<?php echo url(); ?>";
</script>
然后在您的JS文件中提供URL
$(document).ready(function() {
$('#butt_example').on('click', function() {
$.ajax({
url : url+'scripts/functions.php',
type : 'GET',
dataType : 'json',
data : {
'action': 'test'
},
success: function(result) {
var la_result = JSON.parse(result);
console.log(la_result);
},
error: function(log) {
console.log(log.message);
}
});
});
});
如前所述,为http和https修改的网址提取。
错误
类型:函数(jqXHR jqXHR,字符串textStatus,字符串errorThrown)
第一个参数是jqXHR
对象。
同样从这里 :
为了与XMLHttpRequest向后兼容,一个jqXHR对象将公开以下属性和方法:
- readyState
- 状态
- 当基础请求分别以xml和/或文本作为响应时,statusText responseXML和/或responseText分别为setRequestHeader(name,value),该请求通过使用新值替换旧值而不是将新值连接到旧值而偏离标准
- getAllResponseHeaders()
- getResponseHeader()
- statusCode()
- abort()
如您所见,没有jqXHR.message
属性。 因此,当您这样做时:
error: function(log) {
console.log(log.message);
}
当然,您将收到未定义的通知,因为该属性不存在。
从此答案中 ,要获取错误消息,您需要执行以下操作:
error: function(xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
alert(err.Message);
}
适用于我与jQuery 1.12.3
success: function(result) {
alert(result);
},
//显示“测试通过”
控制台日志中返回下一行JSON:JSON.parse:JSON数据的第1行第1行出现意外的关键字
似乎错误与json_encode函数有关。
CentOS 5 php安装不包括json.so模块,因此必须手动安装它,然后才能修复错误。
感谢大家的帮助,对此深表感谢
尝试这个:
$(document).ready(function() {
$('#butt_example').on('click', function() {
$.ajax({
url : 'scripts/functions.php',
type : 'GET',
dataType : 'json',
data : 'action=test',
success: function(result) {
var la_result = JSON.parse(result);
console.log(la_result);
},
error: function(log) {
console.log(log.message);
}
});
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.