使用 ajax、php 和 json 服务器的 post 请求出现错误 404
error 404 on post request with ajax, php and json server
正如标题所说,我得到这个错误
jquery.min.js:3049 POST http://localhost:3000/php/add_events.php 404 (Not Found)
当我尝试使用 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 时,它起作用了,但它不起作用 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);
?>
问题是我试图 post 并进入同一个 php 文件引起的吗?
还是其他原因?
像 json 模式一样转换您的数据格式:
data: { 'title': eventData.title, 'start' : eventData.start.......}
现在你的是:
data: 'title='+ eventData.title+'&start='+ eventData.start +'&end='+ eventData.end +'&areHere='+eventData.areHere+'&finalConsult='+eventData.finalConsult
我认为这个请求需要一个绝对路径,而不是相对路径。
我认为您使用 url 路由,例如 angularjs,如果是,那么您需要在另一台服务器上托管 php 文件(独立于此 url)并且给出绝对路径。
要获得更准确的答案,请分享环境的完整详细信息,以便我帮助您。
您 post 数据未指定 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 );
});
解决方案是POST在json-服务器上是不允许的,所以我迁移到一个更好的apache服务器上(对于所有来到这里并想要解决方案的人)
正如标题所说,我得到这个错误
jquery.min.js:3049 POST http://localhost:3000/php/add_events.php 404 (Not Found)
当我尝试使用 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 时,它起作用了,但它不起作用 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);
?>
问题是我试图 post 并进入同一个 php 文件引起的吗?
还是其他原因?
像 json 模式一样转换您的数据格式:
data: { 'title': eventData.title, 'start' : eventData.start.......}
现在你的是:
data: 'title='+ eventData.title+'&start='+ eventData.start +'&end='+ eventData.end +'&areHere='+eventData.areHere+'&finalConsult='+eventData.finalConsult
我认为这个请求需要一个绝对路径,而不是相对路径。
我认为您使用 url 路由,例如 angularjs,如果是,那么您需要在另一台服务器上托管 php 文件(独立于此 url)并且给出绝对路径。
要获得更准确的答案,请分享环境的完整详细信息,以便我帮助您。
您 post 数据未指定 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 );
});
解决方案是POST在json-服务器上是不允许的,所以我迁移到一个更好的apache服务器上(对于所有来到这里并想要解决方案的人)