Intercooler JS无法在Safari上正确发送表单数据

时间:2018-11-16 14:38:09

标签: javascript jquery ajax django safari

我正在开发社交媒体类型的Web应用程序,到目前为止,在Chrome和Firefox上一切正常。我最近在Safari(iOS和macOS)上发现了一个错误,当我使用中冷器JS发送AJAX请求时,表单数据无法正确发送。

首先发现此问题的原因是,我意识到当人们从通知区域做出响应时,Safari不允许接受朋友的请求。这是当人们接受/拒绝好友通知中的好友请求时的相关HTML

<form method="post" ic-post-to="{% url 'respond-request' item.sender.pk %}">
    {% csrf_token %}
    <button name="accept" type="submit">Accept</button>
    <button name="decline" type="submit">Decline</button>
</form>

在Django视图中,每当有人响应好友请求时,我都会做两件事:

  1. 完全删除通知/朋友请求
  2. 仅当acceptrequest.POST中时,才将用户添加为朋友

这是相关代码

# Remove notification
notification = Notification.objects.get(receiver=request.user, sender=userProfile, action="friend_request_received")
notification.delete()

# Remove the request
request.user.friend_requests_received.remove(userProfile)

# If yes, then add to friends and remove from request
if 'accept' in request.POST:
    request.user.friends.add(userProfile)

这在Chrome和Firefox上可以正常使用。当某人单击以上HTML上的accept时,用户成为朋友。当他们单击decline时,该请求将被删除,并且他们不会成为朋友。

奇怪的是,如果在Safari上使用上述HTML,该请求将被删除,但用户不会成为朋友。我已经在Django中打印了request.POST,并且可以确认是否按预期从Chrome(而非Safari)发送了POST数据。 Safari在通过中间冷却器发送的AJAX请求中根本不包含accept或任何形式的数据,这使得上面代码中的if语句永远不会触发。

这仅仅是Intercooler的错误吗?我在各种文章中都看到人们在谈论使用jQuery以某些方式修改AJAX调用,但是我找不到与使用Intercooler相关的任何内容。是否可以仅使用Intercooler和AJAX在Safari上实现我想要的功能?

0 个答案:

没有答案