0

我刚刚开始尝试使用 Phonegap 将我的第一个且仍在开发中的 Web 应用程序转换为移动应用程序。我对从服务器端页面生成到客户端页面生成感到非常困惑,所以我开始做一些基本的东西作为测试存根,所以我实际上能够开始编写我的应用程序。

我正在尝试将 AJAX 发布到 Ruby Sinatra Web 服务并在浏览器中接收响应。我无法让 Firefox 或 Chrome 走上成功之路。

这只是现在的测试,所以它没有做任何有用或合乎逻辑的事情。Sinatra 路线如下所示:

post "/auth/check" do
    status 200
    content_type :json
        { :login => true }.to_json
end

html/javascript 看起来像这样:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <link rel="stylesheet" type="text/css" href="css/index.css" />
        <!-- <script src="js/lib/zepto.min.js"></script> -->
        <script src="http://code.jquery.com/jquery-2.0.3.min.js"</script>
        <script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"</script>
        <script>
        var BASEURL = "http://localhost:4567";
        function login(){   
            debugger;
            $.ajax({
                dataType: "jsonp",
                url: BASEURL + '/auth/check',
                type: "POST",
                data: { email: 'somedude@example.com',
                        password: 'e'
                },
                success: function (result) {
                    alert(result);
                },
                error: function(xhr, type){
                    alert('Y U NO WORK?')
                }
            });
        }
        </script>   
    </head>
    <body>
        <input type="button" onClick="login()">Click Me</input"
    </body>
</html>

除了给出“YU NO WORK?”之外,我无法让 Firefox 或 Chrome 执行任何操作?警报。任何帮助将非常感激。我尝试从 Zepto.js 切换到 JQuery/JQuery mobile,我尝试将数据类型更改为 jsonp,使用 curl 我已经确认 Sinatra 路由正在返回一些东西和一个 200 状态代码,这就是 JQuery 应该是检查。

4

1 回答 1

0

答案基于 Jan Dvorak 的帮助,首先我需要 Sinatra 来实际返回 JSONP 数据。为 JSONP 支持添加 GEM:

require 'sinatra/jsonp'

其次路由只能是HTTP GET,使用JSONP函数返回一些东西:

get "/auth/check/" do
  content_type :json
  status 200
  @data = true
  JSONP @data
end
于 2013-07-05T08:11:55.710 回答