使用 PHP Slim Framework return Ajax 错误函数实现的 Rest Service,尽管 Ajax 方法有效并且保存了数据?
Rest Service implemented using PHP Slim Framework return Ajax error function, although the Ajax method works and the data was saved?
我使用名为 Slim
的 PHP 框架实现了 Rest 服务,该服务工作正常,因为我也在 SoapUI
中进行了测试并且没有问题。该服务非常简单,它只是将数据保存到 txt 文件中。虽然当我使用 Ajax post 方法通过 javascript 使用服务时它可以工作,并且数据保存在文件中,但是执行 error 函数而不是成功函数。任何想法,出了什么问题?
服务-> PHP SLIM 框架
<?php
require 'vendor/autoload.php';
$app=new \Slim\Slim();
$app->post('/gravar_documento', 'gravar_doc');
function gravar_doc(){
$request=Slim\Slim::getInstance()->request();
$data=$request->getbody();
$dados=json_decode($data,true);
file_put_contents('test.txt', $dados["test"]);
$app=Slim\Slim::getInstance();
$response = $app->response();
$response['Content-Type'] = 'application/json';
$response->status(200);
$response->body(json_encode((object) array('success'=>true)));
}
$app->run();
AJAX
$.ajax({
type:'POST',
url: "Service_url->hidden for safety",
data: JSON.stringify( { test: 1, val: 2} ),
success: function(data){
alert("IN");
},
error: function(data){
alert("Fail");
}
});
谢谢
好吧,您仍然需要查看 return 数据,这就是为什么您应该 console.log 返回数据的原因。回调数据与您字符串化的数据的范围不同。如果您在发出警报之前输出数据,它会告诉您您对请求的 API 响应是什么。
我终于找到解决办法了。我要感谢所有试图帮助我的人,简单的解决方案是在 PHP 代码的第一行添加以下内容:
header('Access-Control-Allow-Origin: *');
它会起作用,至少对我有用。
我使用名为 Slim
的 PHP 框架实现了 Rest 服务,该服务工作正常,因为我也在 SoapUI
中进行了测试并且没有问题。该服务非常简单,它只是将数据保存到 txt 文件中。虽然当我使用 Ajax post 方法通过 javascript 使用服务时它可以工作,并且数据保存在文件中,但是执行 error 函数而不是成功函数。任何想法,出了什么问题?
服务-> PHP SLIM 框架
<?php
require 'vendor/autoload.php';
$app=new \Slim\Slim();
$app->post('/gravar_documento', 'gravar_doc');
function gravar_doc(){
$request=Slim\Slim::getInstance()->request();
$data=$request->getbody();
$dados=json_decode($data,true);
file_put_contents('test.txt', $dados["test"]);
$app=Slim\Slim::getInstance();
$response = $app->response();
$response['Content-Type'] = 'application/json';
$response->status(200);
$response->body(json_encode((object) array('success'=>true)));
}
$app->run();
AJAX
$.ajax({
type:'POST',
url: "Service_url->hidden for safety",
data: JSON.stringify( { test: 1, val: 2} ),
success: function(data){
alert("IN");
},
error: function(data){
alert("Fail");
}
});
谢谢
好吧,您仍然需要查看 return 数据,这就是为什么您应该 console.log 返回数据的原因。回调数据与您字符串化的数据的范围不同。如果您在发出警报之前输出数据,它会告诉您您对请求的 API 响应是什么。
我终于找到解决办法了。我要感谢所有试图帮助我的人,简单的解决方案是在 PHP 代码的第一行添加以下内容:
header('Access-Control-Allow-Origin: *');
它会起作用,至少对我有用。