如何使用ajax将字符串传递给python程序,并将字符串发送回

时间:2016-04-14 15:39:59

标签: javascript python ajax

我有一个ajax请求使用json将对象发送到python程序:

$.ajax({
        url: "http://localhost/cgi-bin/python.cgi",
        type: "POST",
        data: JSON.stringify(myobject),
        dataType: "text",
        success: function(response){
            console.log("it's alive");
            console.log(response)
        },
        error: function(){
            alert('request failed');
        }
})

和python.cgi看起来像

import cgitb
cgitb.enable()
import sys, json

input =sys.stdin

output = json.loads(input)

json.dumps(output, sys.stdout)

这段代码给了我

  

TypeError:json对象必须是' str'不是' TextIOWrapper'

我不明白为什么会发生这种情况,因为我将数据作为字符串传递。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

https://docs.python.org/2/library/cgi.html中所述,您应该使用FieldStorage类而不是直接从标准输入中读取:

[TestMethod]
public void Test_Should_Simulate_Command_Line_Argument() {
    // Arrange
    string[] expectedArgs = new[] { "Hello", "World", "Fake", "Args" };
    var mockedCLI = new Mock<ICommandLineInterface>();
    mockedCLI.Setup(m => m.GetCommandLineArgs()).Returns(expectedArgs);
    var target = mockedCLI.Object;

    // Act
    var args = target.GetCommandLineArgs();

    // Assert
    args.Should().NotBeNull();
    args.Should().ContainInOrder(expectedArgs);

}

import cgi print "Content-Type: application/json" print form = cgi.FieldStorage() 中,您可以访问您期望的数据。