Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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
jqueryajax调用php SLIM框架调用error函数,没有错误消息?_Php_Jquery_Slim - Fatal编程技术网

jqueryajax调用php SLIM框架调用error函数,没有错误消息?

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

我有以下服务器端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_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
from
http://www.something.com/argument

显然,这足以让JavaScript认为这是一个跨域调用,而事实并非如此

JQuery中有一个参数-

jQuery.support.cors = true;

这应该允许跨域调用,或者至少是javaScript认为的跨域调用,但它对我没有任何帮助。我只需要确保其余的电话来自正确的URL。

谢谢您的回复。到目前为止,我已经尝试了“json”和“文本json”。我也尝试过对URL进行硬编码。你能尝试获取一些调试信息吗(比如Firebug)?当然可以,我正在Chrome上寻找一个好的URL的sent-viewer,一旦我知道我发送的URL是什么样子,我就会回来。