javascript – 无法获得发布请求的响应
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 无法获得发布请求的响应,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2369字,纯文字阅读大概需要4分钟。
内容图文
这是我目前用于每5分钟发送一次请求的Javascript代码.
function sendRequest() {
$(document).ready(function() {
console.log($.post('../notify/notify.php', { notify: 1 }).done());
});
}
setInterval(function() {
console.log(sendRequest());
}, 5000);
当我在开发人员工具中检查网络时,正在发送请求并按预期返回响应.这是我的PHP代码:
header('Content-Type: application/javascript');
if(isset($_POST['notify']) && $_POST['notfiy'] == "1") {
echo json_encode(array(
'Title' => 'Welcome to our Site',
'Message' => 'You are current recieving notifications.',
'Location' => 'http://example.com/',
'State' => true
),true);
} else {
echo json_encode(array(
'State' => false
), true);
}
但是,当我检查控制台时,我发现它是一个Object {readyState:“1”}类型,当我然后展开它时,预期的响应包含在responseText字段中.但是,当我将.responseText附加到$.post().done()的末尾时,console.log()返回undefined.
我究竟做错了什么?如何从PHP文件中获取响应?
更新:
在查看问题之后,我了解到我声明了错误的header().类型应该是/ json not / javascript.此外,响应是不可读的,因为如上所述,我只记录了请求的承诺.我需要在done()函数中添加一个函数(param),然后使用其中的响应.
解决方法:
What am I doing wrong?
您在console.log()中包含异步调用,期望$.post()的.responseText或.responseJSON,或$.post()异步调用的回调函数的参数将在控制台中记录.
console.log()不等待异步调用完成或完成. console.log()将记录返回的jQuery promise对象
$.员额()
However, when I check the console I see that it is a type
Object {readyState: "1"}
不是.responseText或jxXHR对象的.responseJSON属性
Returns: 07001
.done()接受单个函数或函数数组,您可以在函数体中包含console.log(),以记录在函数回调中设置为第一个参数的异步操作$.post()的结果. .responseText或.responseJSON可作为.done()的第三个参数的属性访问.
.done(function(data, textStatus, jqxhr) {
console.log(data, jqxhr.responseJSON)
})
您还可以在php中将Content-Type标头设置为“application / javascript”,尽管您从php回显了一个数组.标题应设置为“application / json”. $.post()接受第三个参数,它是预期的Content-Type或dataType的响应;在这里,“json”.
// declare variable `interval` for ability to call `clearInterval(interval)`
var interval;
function sendRequest() {
return $.post('../notify/notify.php', { notify: 1 }, "json")
.done(function(data) {
console.log(data)
})
// handle error
.fail(function(jqxhr, textStatus, errorThrown) {
console.log(errorThrown)
});
}
$().ready(function() {
sendRequest().then(function() {
interval = setInterval(sendRequest, 5000);
})
})
内容总结
以上是互联网集市为您收集整理的javascript – 无法获得发布请求的响应全部内容,希望文章能够帮你解决javascript – 无法获得发布请求的响应所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。