Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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
Jquery 使用javascript通道API调用后端URL_Jquery_Python_Google App Engine - Fatal编程技术网

Jquery 使用javascript通道API调用后端URL

Jquery 使用javascript通道API调用后端URL,jquery,python,google-app-engine,Jquery,Python,Google App Engine,处理程序实现 class TestHandler(RequestHandler, Jinja2Mixin): def get(self): channel_id = str(random.randint(1, 10000)) + str(datetime.now()) chat_token = channel.create_channel(channel_id) context = {'channel_id': channel_id, 'chat_token': cha

处理程序实现

class TestHandler(RequestHandler, Jinja2Mixin):
 def get(self):
    channel_id = str(random.randint(1, 10000)) + str(datetime.now())
    chat_token = channel.create_channel(channel_id)
    context = {'channel_id': channel_id, 'chat_token': chat_token}
    return self.render_response('test.html', **context)

 def post(self):
    channel_id = str(random.randint(1, 10000)) + str(datetime.now())
    chat_token = channel.create_channel(channel_id)
    context = {'channel_id': channel_id, 'chat_token': chat_token}
    return self.render_response('test.html', **context)
<html>
 <head>
 <script type="text/javascript" language="javascript" src="/static/js/jquery-1.6.1.min.js"></script>
 <script type="text/javascript" language="javascript" src="/static/js/backend.js"></script>
 </head>
<body>
    <form method="post" id="testform" name="testform">
        <br><label name="channel_id" id="channel_id">{{channel_id}}</label>
        <br><label name="chat_token" id="channel_id">{{chat_token}}</label>
        <input type="submit" id="btnsubmit" class="btnsubmit" name="btnsubmit" value="submit" />
    </form>
</body>
</html>
 $(document).ready(function () {

    var token =$('#channel_id').val()
    alert(token)

    var channel = new goog.appengine.Channel(token);
    var socket = channel.open();
    socket.onopen = onOpened;

    onOpened = function() {
        connected = true;
        var xhr = new XMLHttpRequest();
        xhr.open('POST','/dashboard/', true);
        xhr.send();
    };

    socket.onmessage = onMessage;
    socket.onerror = onError;
    socket.onclose = onClose;
 });
HTML实现

class TestHandler(RequestHandler, Jinja2Mixin):
 def get(self):
    channel_id = str(random.randint(1, 10000)) + str(datetime.now())
    chat_token = channel.create_channel(channel_id)
    context = {'channel_id': channel_id, 'chat_token': chat_token}
    return self.render_response('test.html', **context)

 def post(self):
    channel_id = str(random.randint(1, 10000)) + str(datetime.now())
    chat_token = channel.create_channel(channel_id)
    context = {'channel_id': channel_id, 'chat_token': chat_token}
    return self.render_response('test.html', **context)
<html>
 <head>
 <script type="text/javascript" language="javascript" src="/static/js/jquery-1.6.1.min.js"></script>
 <script type="text/javascript" language="javascript" src="/static/js/backend.js"></script>
 </head>
<body>
    <form method="post" id="testform" name="testform">
        <br><label name="channel_id" id="channel_id">{{channel_id}}</label>
        <br><label name="chat_token" id="channel_id">{{chat_token}}</label>
        <input type="submit" id="btnsubmit" class="btnsubmit" name="btnsubmit" value="submit" />
    </form>
</body>
</html>
 $(document).ready(function () {

    var token =$('#channel_id').val()
    alert(token)

    var channel = new goog.appengine.Channel(token);
    var socket = channel.open();
    socket.onopen = onOpened;

    onOpened = function() {
        connected = true;
        var xhr = new XMLHttpRequest();
        xhr.open('POST','/dashboard/', true);
        xhr.send();
    };

    socket.onmessage = onMessage;
    socket.onerror = onError;
    socket.onclose = onClose;
 });

我想呼叫后端处理程序。我不知道怎么做。这就是我所做的。有人可以提供帮助吗?

您可以使用url访问后端,如(请参阅)。由于无法从上呈现的页面对这样的页面进行XHR,因此基本上有两个选项:

您可以通过前端的servlet将请求封送到后端。所以你可以这样做:

class MarshalServlet(RequestHandler):
  """ This class is part of your frontend. """
  def post(self, instance, backend):
    # generate an urlfetch request to http[s]?://instance.backend.appid.appspot.com
    # and return its result.
    # (left as an exercise for the reader)

# add a "dashboard" handler to your frontend application.
app = webapp.WSGIApplication([('/dashboard/', MarshalServlet),
                               # other servlets etc.
                             ], debug=True)
或者您可以使用JSONP执行跨域请求,这很容易:

我不清楚您的/dashboard/handler是做什么的,所以我不确定它是否可以/应该返回JSON,或者您是否关心头等等


还请注意,使用getJSON方法不会发送cookies,但您可以使用封送servlet来发送cookies。

我认为通道API与这个问题基本无关。