Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery&;Ajax成功函数-如何从PHP获得响应_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript jQuery&;Ajax成功函数-如何从PHP获得响应

Javascript jQuery&;Ajax成功函数-如何从PHP获得响应,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我对使用PHP和JavaScript的Ajax非常陌生。 我必须做一些简单的项目作为培训的研讨会,我创建了js脚本: $(function() { $('#bookAdd').submit(function (e) { e.preventDefault(); var title = $('#title').val(); var description = $('#description').val(); // console.lo

我对使用PHP和JavaScript的Ajax非常陌生。 我必须做一些简单的项目作为培训的研讨会,我创建了js脚本:

$(function() {
   $('#bookAdd').submit(function (e) {
       e.preventDefault();

       var title = $('#title').val();
       var description = $('#description').val();

       // console.log(title + '\n');
       // console.log(description);
       $.ajax({
           url: "../rest/rest.php/book",
           data: {
               'title': title,
               'description': description
           },
           type: 'POST',
           dataType: 'json',
           success: function (response) {
               console.log(response);
               //console.log(response['success']);
           },

           error: function (xhr, status, error) {
               console.log('error');
           }

       });
   });
});
其中#bookAdd是添加新书的表单,rest.php是添加适当类并将书保存到数据库的php脚本。看起来是这样的:

<?php
//load DB config
require_once __DIR__.'/config/db.php';


$response = [];
//connect to DB
try {
    $conn = new PDO(
        "mysql:host=".DB_HOST.";dbname=".DB_DB.";charset=utf8"
        , DB_LOGIN, DB_PASSWORD,
        [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
    );
} catch (PDOException $e) {
    $response = ['error' => 'DB Connection error: '.$e->getMessage()];
}

######### Dynamic load php class file depend on request #########
//parsing url
//if request URI is rest.php/book/1
//we will parse part book/1 and explode it
//to get name of class (book) and optional id from db (1)
$uriPathInfo = $_SERVER['PATH_INFO'];
//explode path info
$path = explode('/', $uriPathInfo);
$requestClass = $path[1];

//load class file
$requestClass = preg_replace('#[^0-9a-zA-Z]#', '', $requestClass);//remove all non alfanum chars from request
$className = ucfirst(strtolower($requestClass));

$classFile = __DIR__.'/class/'.$className.'.php';
require_once $classFile;

######### END DYNAMIC LOAD #########

$pathId = isset($path[2]) ? $path[2] : null;

if (!isset($response['error'])) {//process request if no db error
    include_once __DIR__.'/restEndpoints/'.$className.'.php';
}

header('Content-Type: application/json');//return json header

if (isset($response['error'])) {
    header("HTTP/1.0 400 Bad Request");//return proper http code if error
}

echo json_encode($response);

尝试在浏览器中运行.php文件,查看它是否输出所需的结果。还可以尝试用php文件的绝对路径替换相对路径。

好的,我会解决这个问题:) 在此处找到解决方案:。
在我的回应下,我不得不调用函数stringify。所以…结论是,我不能像那样将响应显示为json对象?我说的对吗?

您是否检查了“网络”选项卡以查看是否发送/接收了正确的请求/响应?您是否检查过您的服务器脚本实际上正在运行,因此您既没有收到响应,也没有收到错误?URL
。/rest/rest.php/book
似乎很奇怪?嗯……网络选项卡中没有任何可见的php脚本。这意味着什么?如果你的php脚本没有被点击的网络日志,那么你的ajax函数就没有被调用。问题是我从我的培训材料中得到了后端文件,所以我很困惑。。我做错了什么或者那些脚本是错的。。。