【问题标题】:Can't figure out how to do XMLHttpRequest to google app engine无法弄清楚如何对谷歌应用引擎执行 XMLHttpRequest
【发布时间】:2011-07-06 10:04:31
【问题描述】:

我正在尝试从 javascript(谷歌浏览器扩展)到我的谷歌应用做一个简单的 POST 我可以看到 HTTP POST 确实被发送到 GAE 服务器,但我不知道如何传输一个简单的文本字符串,并在谷歌应用程序中使用它。

目标:使用 xmlhttpRequest 从 javascript 发送一个字符串,在 google-app 网页上显示此字符串。

这是javascript的代码:

  function onRequest(request, sender, sendResponse) {
    var url = request;
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "http://myapp.appspot.com");
    xhr.send(url);
    // Return nothing to let the connection be cleaned up.
    sendResponse({});
  };

这是我在服务器端处理帖子的方式:

def post(self):
    url1 = str(self.request.get('url1'))
    self.response.headers['Content-Type'] = 'text/html'
    self.response.out.write('<p>URL is: %s</p>' % url1)

当我查看 POST 响应时,我看到了

<p>URL is: </p>

发送的 var url 在哪里?

【问题讨论】:

    标签: javascript ajax google-app-engine google-chrome google-chrome-extension


    【解决方案1】:

    我让它以不同的方式工作。我用 jquery 代替 XMLHttpRequest:

        $.post("http://myapp.appspot.com", { url1: request});
    

    它成功了:)

    顺便说一句,我还发现如果你想让chrome扩展的html使用jquery,你需要这样做

    <script src="jquery-1.5.1.js"></script>
    <script> your code here </script>
    

    (我相信这对你们来说很基础,但对我来说很新鲜 :)

    【讨论】:

    • 我遇到了同样的发现模式(2012 年,现在)。我找不到一个好的 XMLHttpRequest 方法来做到这一点,但是有一些 $.ajax{stuff} 解决方案。您能否发布您用于学习 $.post(...) 方法的资源?
    【解决方案2】:

    xhr.send() 包含的内容将在 self.request.body 中,如果未以 CGI 格式指定。对于您的简单测试,您还可以尝试xhr.send("url1=" + request)

    【讨论】:

    • 谢谢,我试试。你的意思是 xhr.send("url=" + request) 吗? (你写的是'url1'而不是'url')
    猜你喜欢
    • 2013-04-10
    • 2013-09-13
    • 2020-08-27
    • 2020-11-07
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    相关资源
    最近更新 更多