使用 ajax、php 和 json 服务器发布请求时出现错误 404

Posted

技术标签:

【中文标题】使用 ajax、php 和 json 服务器发布请求时出现错误 404【英文标题】:error 404 on post request with ajax, php and json server 【发布时间】:2018-03-02 11:28:35 【问题描述】:

如标题所述,我收到此错误

jquery.min.js:3049 POST http://localhost:3000/php/add_events.php 404(未找到)

当我尝试在 json-server 上使用该代码访问 php 文件时:

$.ajax(
    url: './php/add_events.php',
    data: 'title='+ eventData.title+'&start='+ eventData.start +'&end='+ eventData.end +'&areHere='+eventData.areHere+'&finalConsult='+eventData.finalConsult ,
    type: "POST",
    success: function(json) 
        alert("OK");
        eventData.id = json
    
);

当我尝试设置 GET 而不是 POST 时,它可以工作,但不能发布(正常)。 这是php代码:

<?php

$title=$_POST['title'];
$start=$_POST['start'];
$end=$_POST['end'];
$areHere=$_POST['areHere'];
$finalConsult=$_POST['finalConsult'];
$typeConsult=$_POST['typeConsult'];
try 
 $bdd = new PDO('mysql:host=localhost;dbname=agenda', 'root', '');
 catch(Exception $e) 
 exit('failed');


$sql = "sql insert into query";

$q = $bdd->prepare($sql);
$q->execute(array(':title'=>$title, ':typeConsult'=>$typeConsult ':start'=>$start, ':end'=>$end, ':finalConsult'=>$finalConsult, ':areHere'=>$areHere));
$query = "some sql select query";
$result = $bdd->query($query) or die(print_r($bdd->errorInfo()));
echo json_encode($result);

?>

问题是因为我试图发布并进入同一个 php 文件吗? 还是别的什么?

【问题讨论】:

您的错误表明您的网址未找到,这就是您收到错误的原因。确保您的网址正确 @PankajMakwana 我确定该网址是正确的,因为正如我所说,使用“get”而不是“post”,它可以工作(但不会做我想要的) 【参考方案1】:

将您的数据格式转换为 json 模式:

data:  'title': eventData.title, 'start' : eventData.start.......

现在你的是:

data: 'title='+ eventData.title+'&start='+ eventData.start +'&end='+ eventData.end +'&areHere='+eventData.areHere+'&finalConsult='+eventData.finalConsult 

【讨论】:

它似乎可以工作,但现在我有另一个错误:未捕获的类型错误:无法在 e (jquery.min. js:2702) 在 Ab (jquery.min.js:2695) 在 Ab (jquery.min.js:2697) 在 Ab (jquery.min.js:2697) 在 Function.r.param (jquery.min.js: 2709) 在 Function.ajax (jquery.min.js:2934) 在 htmlDivElement.click ((index):267) 在 HTMLButtonElement. (jquery-ui.js:12443) 在 HTMLButtonElement.dispatch (jquery.min. js:1627) 这是另一个错误。如果您使用日历插件或其他。您的第一个问题已解决,请验证好答案并使用您的更多 html 创建新问题帖子。 好的@P.Frank,我会这样做,如果你能帮助我,请继续我将创建的新问题 @P.Frank 我找到了解决方案 因为我没有成功,所以我90分钟都做不到【参考方案2】:

您发布数据时未指定dataType。试试:

$.ajax(
    url: './php/add_events.php',
    data: 'title='+ eventData.title+'&start='+ eventData.start +'&end='+ eventData.end +'&areHere='+eventData.areHere+'&finalConsult='+eventData.finalConsult ,
    type: "POST",
    dataType : 'html', //Example
    success: function(json) 
        alert("OK");
        eventData.id = json
    
);

或尝试使用 post() 是否收到结果:

$.post( "./php/add_events.php", function( data ) 
  alert( "Data ok: " + data );
);

【讨论】:

谢谢!这是另一种方式,但正如 Hiamanshu 所说,我将 html-datas 替换为 json-datas 并且不再出现此错误(已被其他错误替换)【参考方案3】:

我认为对于这个请求,它需要一个绝对路径,而不是相对路径。

我认为你使用像 angularjs 这样的 url 路由,如果是,那么你需要在另一台服务器中托管 php 文件(独立于这个 url)并给出绝对路径。

如需更准确的答案,请分享环境的完整详细信息,以便我为您提供帮助。

【讨论】:

对于我在 json-server 端口 3000 (localhost:3000) 上工作的环境,你也想要什么? 你使用url进行路由吗? 你这是什么意思?【参考方案4】:

解决方案是 json-server 上不允许 POST,所以我迁移到了更好的 apache 服务器上(对于所有来到这里并想要解决方案的人)

【讨论】:

以上是关于使用 ajax、php 和 json 服务器发布请求时出现错误 404的主要内容,如果未能解决你的问题,请参考以下文章

使用 ajax 将 JSON 发送到 PHP

PHP、jQuery Ajax 和 json 跨域返回

jQuery通过Ajax向PHP服务端发送请求并返回JSON数据

php 5.1.6 json_encode 和 codeigniter

Ajax不能接受php return值的原因

从 PHP 脚本返回 JSON 和 HTML