Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.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 为什么在python服务器上接收到的JSON消息为None?_Jquery_Python_Json_Ajax_Flask - Fatal编程技术网

Jquery 为什么在python服务器上接收到的JSON消息为None?

Jquery 为什么在python服务器上接收到的JSON消息为None?,jquery,python,json,ajax,flask,Jquery,Python,Json,Ajax,Flask,我是网络编程新手,我正在尝试学习如何在python服务器和JavaScript客户端之间发送消息 我找到了以下指南:,它指导您如何使用flask创建python服务器,以及如何使用AJAX和JQuery向其发送请求 服务器python代码(来自指南中的修改): 客户端(名为“index.html”,也来自指南中的修改): log(“启动脚本”); //设置一些要使用的JSON var cars=[ {“品牌”:“保时捷”,“车型”:“911S”}, {“make”:“Mercedes-Benz

我是网络编程新手,我正在尝试学习如何在python服务器和JavaScript客户端之间发送消息

我找到了以下指南:,它指导您如何使用flask创建python服务器,以及如何使用AJAX和JQuery向其发送请求

服务器python代码(来自指南中的修改):

客户端(名为“index.html”,也来自指南中的修改):


log(“启动脚本”);
//设置一些要使用的JSON
var cars=[
{“品牌”:“保时捷”,“车型”:“911S”},
{“make”:“Mercedes-Benz”,“model”:“220SE”},
{“品牌”:“捷豹”,“车型”:“Mark VII”}
];
window.onload=函数(){
//设置按钮单击
document.getElementById(“theButton”).onclick=function(){
嫁妆
};
log(“已成功执行window.onload”);
}
函数doWork(){
//ajax将JSON发送到服务器
$.post(“接收器”、车辆、功能(){
});
//停止链接重新加载页面
event.preventDefault();
log(“已成功执行doWork”);
}
console.log(“结束脚本”);
这将使用AJAX向Python发送数据:

当我在本地主机上上传index.html时,它会将所有消息打印到控制台,除了“executed doWork successfully”(这很有意义)

但当我点击按钮(一个id为“theButton”的元素)时,它会刷新页面,而不会打印该消息。此外,在服务器端,我得到了“data=None”,当我在developer tools的网络中的response选项卡中检查响应时,有时我得到了“receiveddataasnone”,有时什么也没有


有人能帮我理解这种行为吗?我一步一步地遵循这个指南,但我就是找不到我的错误。

编辑:原来的解决方案是错误的,你应该参考链接的问题


附加背景:不会引发任何异常。您还可以使用网络选项卡(请参阅)查看Chrome发送的内容。

您好,谢谢您的回复。我试着补充你说的话,但还是不起作用。当我在网络选项卡(我使用Firefox)中检查响应时,我得到“接收数据为无”响应。你知道为什么吗?此外,有时我的状态是绿色的,有时是灰色的,看起来好像什么都没发生或什么……在收到之前先检查你发送的内容。由于你的问题被标记为重复,请查看链接问题显示的内容。我不是jQuery方面的专家。我尝试过检查,但问题是当我按下按钮时,它似乎会刷新整个页面。注意,我在函数中添加了一个控制台打印,它应该表示函数doWork()已经执行,但它没有打印。而是在发送信号时重新加载页面。如果您需要保留日志,请选中网络选项卡中的“保留日志”。
#!flask/bin/python

import sys

from flask import Flask, render_template, request, redirect, Response
import random, json

app = Flask(__name__)


@app.route('/')
def output():
    # serve index template
    return render_template('index.html', name='Joe')


@app.route('/receiver', methods = ['POST'])
def worker():
    print("execute worker()")
    # read json + reply
    data = request.get_json()
    print("data = "+str(data))
    if data is None:
        return "Recieved data as None"
    result = ''

    for item in data:
        # loop over every row
        result += str(item['make']) + '\n'

    return result

if __name__ == '__main__':
    # run!
    app.run()
<!DOCTYPE html>
<html lang="en">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script type="text/javascript">
    console.log("started script");
// setup some JSON to use
var cars = [
    { "make":"Porsche", "model":"911S" },
    { "make":"Mercedes-Benz", "model":"220SE" },
    { "make":"Jaguar","model": "Mark VII" }
];

window.onload = function() {
    // setup the button click
    document.getElementById("theButton").onclick = function() {
        doWork()
    };
    console.log("executed window.onload successfully");
}

function doWork() {
    // ajax the JSON to the server
    $.post("receiver", cars, function(){

    });
    // stop link reloading the page
 event.preventDefault();
 console.log("executed doWork successfully");
}
console.log("ended script");
</script>
This will send data using AJAX to Python:<br /><br />
<a href="" id="theButton">Click Me</a>

</html>