我正在尝试创建一个使用API来存储数据库中的信息的表单。
但文件 app.php 它没有返回任何内容。我可以处理API与数据库进行通信。
我在我的前端窗体的Developer Extension中收到此错误:
语法错误:JSON.parse: JSON数据第1行第1列的意外数据结尾
仅仅是为了测试,我尝试在 app.php 中执行var_dump($response); die;
,它会正确显示文本。
我的 app.php
<?php
namespace App;
require 'autoload.php';
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_REQUEST['action'])) {
switch ($_REQUEST['action']) {
case 'set':
$data = new Data;
$data->name = $_REQUEST['name'];
$data->email = $_REQUEST['email'];
$data->phone = $_REQUEST['phone'];
header('Content-Type: application/json');
$response['id'] = $data->save();
return json_encode($response);
break;
default:
header("HTTP/1.0 404 Not Found");
break;
}
} else {
header("HTTP/1.0 404 Not Found");
}
我的app.js文件:
var data = {
name: name,
email: email,
phone: phone,
action: 'set'
};
var sentData = sendData(data);
if(sentData) {
alert("OK");
resetFields();
} else {
alert("NOT OK");
}
function sendData(data) {
$.ajax({
url: 'app/app.php',
method: 'POST',
data: data,
dataType: 'json',
success: function(response) {
return response;
},
error: function(xhr, status, error) {
return xhr.responseText
}
})
}
那么,错误在哪里?我提前感激。
答案 0 :(得分:1)
不应使用return
,而应该回显你的json,如果它是脚本执行的结束,你可以使用exit
。
<?php
namespace App;
require 'autoload.php';
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_REQUEST['action'])) {
switch ($_REQUEST['action']) {
case 'set':
$data = new Data;
$data->name = $_REQUEST['name'];
$data->email = $_REQUEST['email'];
$data->phone = $_REQUEST['phone'];
header('Content-Type: application/json');
$response['id'] = $data->save();
exit(json_encode($response));
break;
default:
header("HTTP/1.0 404 Not Found");
break;
}
} else {
header("HTTP/1.0 404 Not Found");
}