在transcrypt中使用xmlhttprequest()



我只能完全限制javascript知识,从编码一个小的API站点。

我将如何在transcrypt中使用 XMLHttpRequest()?还是我应该使用URLlib或其他东西?

它就像创建新的xmlhttprequest对象一样简单,然后发送数据或像JS中的页面?

XHR = XMLHttpRequest()
XHR.open("POST", "https://example.com/cors.php")

确实和js一样简单,只有python语法:

def read_file():
    xmlhttp= __new__ (XMLHttpRequest())
    xmlhttp.open('GET', 'https://github.com/QQuick/Transcrypt/blob/master/README.rst', False);
    xmlhttp.send()
    console.log(xmlhttp.responseText)

在您的示例中,将是:

XHR = __new__ (XMLHttpRequest())
XHR.open("POST", "https://example.com/cors.php")

注意__new__ ()功能。在JavaScript中,它将是new操作员,但Python语法不允许。

如果您想完全避免__new__ (),则可以封装XMLHttpRequest i真正的Python类(现在是JS函数(,但无需。

http://www.transcrypt.org/docs/html/special_facilities.html#creating-javascript-objects-with-new-constructor

用于使用或避免__new__ ()的一般外观。

您也可以像以下更大的示例一样通过jQuery:

__pragma__ ('alias', 'jq', '$')
__pragma__ ('noalias', 'clear')
# For use by eval'ed turtle applet
import turtle
import random
import math
def clear ():
    editor.setValue ('')
    turtle.reset ()
    run ()
def run ():
    def success (result):
        global random
        turtle.reset ()
        rnd = random
        eval (result)
        random = rnd
    def fail (a, b, c):
        print ('Run error:', a, b, c)
    # N.B. The request has to be explicitly encoded, but the response is already implicitly decoded
    jq.ajax ({
        'url':'http://www.transcrypt.org/compile',
        'type': 'POST',
        'data': JSON.stringify (editor.getValue ()),
        'dataType': 'json',
        'contentType': 'application/json',
        'success': success,
        'fail': fail
    })
def mail ():
    def success (result):
        print (result)
    def fail (a, b, c):
        print ('Run error:', a, b, c)
    jq.ajax ({
        'url':'http://www.transcrypt.org/mail',
        'type': 'POST',
        'data': JSON.stringify ([document.getElementById ('mail_address') .value, editor.getValue ()]),
        'dataType': 'json',
        'contentType': 'application/json',
        'success': success,
        'fail': fail
    })
def selectExample ():
    def success (result):
        editor.setValue (result [0])
        turtle.reset ()     # Using old paths
        window.terminate = True
        console.log (result [1])
        eval (result [1])   # Using new paths (so cannot clear old result)
    def fail (a, b, c):
        print ('Select example error:', a, b, c)
    selector = document.getElementById ('select_example')
    jq.ajax ({
        'url':'http://www.transcrypt.org/example',
        'type': 'POST',
        'data': JSON.stringify (selector.options [selector.selectedIndex] .value),
        'dataType': 'json',
        'contentType': 'application/json',
        'success': success,
        'fail': fail
    })
selectExample ()

这是在以下方式完成的方式:

http://www.transcrypt.org/live/turtle_site/turtle_site.html

[编辑]

(响应OP的评论(

确实,任何普通的JavaScript对象都可以通过这种方式进行实例化。请注意,在特殊情况下,您始终可以插入一件文字JS代码,如以下内容所述

http://www.transcrypt.org/docs/html/special_facilities.html#inserting-literal-javascript-pragma-js-js-and-include

至于可用的libs,TransCrypt旨在直接使用任何JS LIB,因为JS LIB倾向于专注于与客户端/浏览器相关的功能。

尽管如此,可用标准Lib的数量正在增长。目前可用的是:

  • cmath
  • datetime
  • 检查
  • itertools
  • 记录
  • 数学
  • 随机(部分(
  • re(几乎完成(
  • 时间
  • 乌龟(几乎完成(
  • 警告

除此之外,还有一个小端口,如:

中所述

http://www.transcrypt.org/numscrypt/docs/html/supported_constructs.html

可用:

https://github.com/qquick/numscrypt

相关内容

  • 没有找到相关文章

最新更新