使用jQuery通过Ajax将数据从javascript发送到php.如何查看数据
Sending data from javascript to php using via Ajax using jQuery. How to view the data back?
我知道这个问题被问了很多,因为我从早上开始就在谷歌上搜索,但我就是想不出我的代码中发生了什么。
我有一个index.php(这是我的网站),它使用表单从用户那里接收信息,然后单独调用一个javascript文件,然后调用另一个后端php文件(这个后端php文件使用mysql查询数据库并做一些事情)。
问题是我不确定什么信息是从我的js传递到后端php的。我刚刚学习了jQuery和Ajax,所以我真的不知道我犯的那个小错误是什么。
据我所知,后台php完成了它的工作,并将值传递给javascript以显示在网页上。但是我的数据没有被发送/显示。我得到一个错误500内部服务器错误。
以下是目前有问题的代码片段:
Javascript:
var data1 = {week:week, group:grp_name};
$.ajax({
dataType: "json",
type: "POST",
url : "php/remindUsers.php",
success : function(response){
alert ("success !");
},
error : function(response){
console.log(response);
alert("fail!");
}
})
});
PHP后端(remindUsers.PHP):
<?php
if (isset($_POST['week'])) {
$week = $_POST['week'];
}
if (isset($_POST['group'])) {
$group_name = $_POST['group'];
}
echo $week;
?>
我之所以省略sql代码段,是因为它们运行良好。
编辑:现在我的状态码是200,回复文本也可以。我的响应文本在预期的实际响应文本旁边显示了一个奇怪的"回车"符号。这正常吗?它仍然进入错误块,而不是成功块。
我不能完全回答你的问题,因为我需要更多关于正在发生的事情的调试信息,但你的代码有2-3件事让我有点困扰,可能会修复你的错误。
首先,在后端使用isset,如下所示:
if (isset($_GET['your_input_name'])) {
$someData = $_GET['your_input_name'];
}
isset部分在这里非常重要。设置后重试。如果您停止出现500错误。这可能是因为你的数据从未发送到后端,或者因为你没有检查好输入名称。
第二,关于输入名称。我可以在你发送的代码中看到:
var data1 = {week:week, group:grp_name};
因此,在您的后端,您应该使用这样的值的名称来检索您的数据:
$week = $_POST("week");
第三,我不是json专业人士,但也许你的json无效。即使他没事,我也建议你做一个这样的"更干净"的:
var data = [
{ 'name' : 'week', 'value' : week}
];
最后,如果您使用表单将数据发送到php,那么您可以使用类似的东西:
var myForm = $("#myForm").serializeArray();
$.ajax({
url: 'yourUrl',
type: "GET",
data: myForm,
dataType: 'json',
success: function(res){
//your success code
},
error: function(){
//your error code
}
});
我希望这能有所帮助。
在json上的PHP响应中不能有这些标记<body>,...
。
它必须是唯一的:
<?php
$week = $_POST("data");
$json = json_decode($week);
echo json_encode($json);
?>
删除上的注释
//数据:{周:周}
并设置一个具有有效值的可变周:
数据:{周:周}
因此:
$.ajax({
dataType: "json",
type: "POST",
url : "php/remindUsers.php",
data : {week :week} ,
success : function(response){
console.log(response);
},
为了看看反应的形状是什么。
您做错了几件事。首先,您不希望在将数据发送到服务器之前将其字符串化。您想要发送JSON,所以您的注释行是正确的。PHP也有一个问题。进入服务器的数据看起来像:
{week: "Something"}
因此,在您的PHP中,您希望访问以下数据:
$_POST["week"];
使用此
PHP
$week = $_POST['data'];
$json = json_encode($week);
echo $json;
JS-
$.ajax({
dataType: "json",
type: "POST",
url : "php/remindUsers.php"
//data : {week :week} ,
data: {data:{week:'week', group:'grp_name'}} ,
success : function(response){
alert ("success !");
},
error : function(response){
alert("fail!");
}
})
我会说将php封装在一个函数中并回显json。检查是否有POSTed数据也是很好的,如果没有,则返回错误消息。这还没有经过测试,但有望为你指明正确的方向。
<?php
function getJSON() {
if (isset($_POST["data"] && !empty($_POST['data']) ) {
$week = $_POST["data"];
$json = json_decode($week);
echo $json;
} else {
echo "There was a problem returning your data";
}
}
getJSON();
?>
事实上,在我写这篇文章的时候,我意识到你可以在AJAX POST中尝试这些标题:
accepts: 'application/json',
contentType: 'application/json',
dataType: 'json'
希望能有所帮助。
成功了。多亏了另一篇SO帖子,我找到了答案。
TIL:即使服务器响应正常,也会触发错误条件,因为从php返回到javascript的数据不是json,因为我在ajax请求中明确提到了dataType:"json"。
此处链接:
Ajax请求返回200 OK,但触发错误事件而不是成功
感谢大家帮助我,指引我朝着正确的方向前进。干杯
- PHP:显示sqlite数据库中的html格式数据,使用tinymce保存
- 巨大的数据和PHP错误
- 在php中提交数据时,如果某些值为null,而某些值为非null,如何进行查询
- json-ajax动画防止通过php发送数据
- Jquery:对返回JSON数据的php脚本的Ajax调用
- 在php和mysql中选择选项.一旦选择了选项,就列出我的sql数据库数据
- 如何在没有ajax的情况下将javascript动态数据发送到php变量
- 将数据保存到数据库(ajax/php)后,使文本字段变灰/禁用
- 为什么数据没有从ajax传递到php
- 如何将JavaScript变量的数据传递到另一个php页面
- 使用外部ajax数据PHP绘制图表
- IE不发送发布数据PHP&jQuery
- 如何将数据 php 更改为 javascript json
- 如何插入数据 PHP JavaScript MySQL 与多个数组
- 将数据PHP(客户端)传递给C#(服务器端)
- 跨会话保存数据- php
- 从AJAX调用操作数据:PHP或Javascript
- 如何在jQuery中获取数据- PHP中的多重标签选择
- Ajax显示动态数据php在html下拉
- 使用azax &获取数据;php