jqueryajax调用php SLIM框架调用error函数,没有错误消息?
我有以下服务器端SLIM代码:jqueryajax调用php SLIM框架调用error函数,没有错误消息?,php,jquery,slim,Php,Jquery,Slim,我有以下服务器端SLIM代码: require 'Slim/Slim.php'; $app = new Slim(); //$app->config('debug', true); $app->get('/hello', 'hello'); //$app->post('/addConsultant', 'addConsultant'); $app->run(); function hello() { echo '{"hello": ' . json_encod
require 'Slim/Slim.php';
$app = new Slim();
//$app->config('debug', true);
$app->get('/hello', 'hello');
//$app->post('/addConsultant', 'addConsultant');
$app->run();
function hello() {
echo '{"hello": ' . json_encode("merp") . '}';
}
很简单,对吧?我的意思是这只是一个单一的得到
现在,我有了以下客户端Javascript代码:
var rootURL = "http://somabsolutions.se/dev/index.php/";
$('#btnHello').click(function() {
$.ajax({
type: 'GET',
url: rootURL + '/hello',
dataType: "text json",
success: function(data){
alert("Something " + data);
},
error: ajaxFailed
});
return false;
});
function ajaxFailed(XMLHttpRequest, textStatus, errorThrown) {
alert("XMLHttpRequest=" + XMLHttpRequest.responseText + "\ntextStatus=" + textStatus + "\nerrorThrown=" + errorThrown);
}
也很容易
我有一个HTML文件,它包含了jQuery绑定到AJAX调用的按钮:
<!DOCTYPE HTML>
<html>
<head>
<title>
Backend test
</title>
</head>
<body>
<form id="testForm">
<button id="btnHello">Hello World</button>
</form>
<script src="javascript/jquery-1.7.2.min.js"></script>
<script src="javascript/main.js"></script>
</body>
</html>
后端测试
你好,世界
这个东西,以前是有用的,直到今天,因为某种外来的原因,它才停止这样做
看,这很有效,对吗
但每次我按下HTML按钮时,Ajax都会认为调用失败,并将我重定向到错误函数,该函数只能向我提供空白错误消息
这有什么问题?几天前还不错 您的问题可能是您的根URL以
/
结尾,而您添加的URL的开头又是/hello
(因此将请求URL根//hello
),或者数据类型也可能有问题:“text json”
。我总是使用数据类型:“json”
什么对我有用
另外(但这只是一个格式化问题),您可以将这行代码变得更具PHP风格:(我知道它的代码更多,但我认为它更易于阅读,看起来更像PHP…:D)
回显“{”hello“:”.json_encode(“merp”)。}
如果将其更改为:
echo json_编码(数组(“hello”=>“merp”)
好吧,我想一定是浏览器或服务器出了问题,因为现在它可以工作了。。。 因此,如果遇到此问题,请尝试清除所有Chrome数据 真奇怪
谢谢你的帮助 好吧,现在我终于知道是怎么回事了,问题是我试图对一个与当前打开的URL不同的URL进行REST调用,我试图调用
http://something.com/argument
fromhttp://www.something.com/argument
显然,这足以让JavaScript认为这是一个跨域调用,而事实并非如此
JQuery中有一个参数-
jQuery.support.cors = true;
这应该允许跨域调用,或者至少是javaScript认为的跨域调用,但它对我没有任何帮助。我只需要确保其余的电话来自正确的URL。谢谢您的回复。到目前为止,我已经尝试了“json”和“文本json”。我也尝试过对URL进行硬编码。你能尝试获取一些调试信息吗(比如Firebug)?当然可以,我正在Chrome上寻找一个好的URL的sent-viewer,一旦我知道我发送的URL是什么样子,我就会回来。