Я создаю образец http-сервера на python и пытаюсь подключить его с помощью метода публикации ajax.
когда клиент запускает сообщение, я получаю connection ajax from:...
логин на своем сервере, а затем send_response(200)
,
но в моей клиентской части всегда была ошибка и ответ ['status'] = 0, пожалуйста, помогите мне, большое спасибо!
Часть HTTP-сервера: (python)
class ajax_server(BaseHTTPRequestHandler):
def do_POST(self):
print('connection ajax from:', self.address_string())
data = {"data":"test"}
json_string = json.dumps(data)
self.send_response(200)
self.send_header(
'Content-type',
'application/json'
)
self.end_headers()
self.wfile.write(json_string.encode(encoding='utf-8'))
server = ThreadedHTTPServer("my server ip", ajax_server)
server.serve_forever()
Клиентская часть: (javascript)
$(document).ready(function () {
update_ajax();
function update_ajax() {
$.ajax({
url: "my server url",
type: 'POST',
success: function (response) {
alert(response["status"]);
},
error: function (response) {
alert(response['status']);
}
})
//setTimeout(update_ajax, 1000);
}
});
обновлять:
- этот сервер может передавать данные JSON в браузер Chrome
- этот клиент хорошо работает с возвратом django JsonResponse (response['status'] = 200)
должна быть какая-то ошибка, которую я игнорирую, чтобы создать ответ ajax, как это делает django.
@AllanWind Пожалуйста, не голосуйте за закрытие вопросов просто потому, что они вам не нравятся. Если вы читаете правила - вы увидите, что этот тип поведения отмечен в правилах сообщества.
@AlanSTACK Я проголосовал за то, чтобы закрыть вопрос, потому что ему не хватает внимания (вот клиент на javascript и сервер на python выясняют, почему это не работает). Это не имеет никакого отношения к тому, что мне "нравится" вопрос. На самом деле, я надеюсь, что оператор переработает его в соответствии с запросом и предоставит некоторые отладочные данные.
@AlanSTACK, не могли бы вы дать мне ссылку на руководство, на которое вы ссылаетесь? Я ценю, что вы указали, если я ошибаюсь здесь.
спасибо за совет, я предоставлю более подробную информацию о том, что я пробовал
наконец, я нашел добавить Access-Control
в заголовок, и это работает~
def do_POST(self):
print('connection ajax from:', self.address_string())
data = {"data":"test","status":200}
json_string = json.dumps(data)
self.send_response(200)
self.send_header("Content-type", "application/json")
self.send_header("Access-Control-Allow-Origin", "*")
self.send_header("Access-Control-Expose-Headers", "Access-Control-Allow-Origin")
self.send_header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept")
self.end_headers()
self.wfile.write(json_string.encode(encoding='utf-8'))
Выясните, является ли проблема на стороне клиента (с использованием известной рабочей конечной точки) или на стороне сервера (используйте работающий клиент, такой как curl). Удалите рабочую часть из вопроса и обеспечьте вывод неисправной части.