gpt4 book ai didi

jquery - ajax POST 仅在 IE 中产生 SyntaxError

转载 作者:行者123 更新时间:2023-12-01 07:12:22 25 4
gpt4 key购买 nike

除了 IE 之外的所有浏览器,一切都运行完美,在 IE 中,帖子甚至看起来都不是发送到 Server 的,并且出现 SyntaxError 已记录到控制台。

我在 WordPress 门户上有一个简单的注册页面,它使用 cURL 将注册表单发布到另一台计算机。

JS:

$("#formSubmitButton").click(function () {
$('#activity').show();

AttachValidation($("#form"));
if ($("#form").valid()) {
$.ajax({
cache: false,
type: "POST",
url: '',
data: $('#form').serialize(),
success: function(data) {
ProcessResponse(data, "form");
},
dataType:'json'
});
}
else {
$('#activity').hide();
}
return false;
});

JS 用于错误处理:

$(document).ajaxError(function (event, jqxhr, settings, exception) {
$('#activity').hide();
toastr.error('An unhandled error has occured. Please contact customer support');
console.error(jqxhr);
console.error(exception);
});

一些用于REST客户端WordPress PHP:

$this->acceptType       = 'application/json';   

protected function executePost ($ch)
{
if (!is_string($this->requestBody))
{
$this->buildPostBody();
}

curl_setopt($ch, CURLOPT_POSTFIELDS, $this->requestBody);
curl_setopt($ch, CURLOPT_POST, 1);

$this->doExecute($ch);
}

protected function setCurlOpts (&$curlHandle)
{
curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curlHandle, CURLOPT_TIMEOUT, 40);
curl_setopt($curlHandle, CURLOPT_URL, $this->url);
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array ('Accept: ' . $this->acceptType, 'api-key: ' . $this->ApiKey));
}

protected function doExecute (&$curlHandle)
{
$this->setCurlOpts($curlHandle);
$this->responseBody = curl_exec($curlHandle);
$this->responseInfo = curl_getinfo($curlHandle);

curl_close($curlHandle);
}

此外,IE 开发工具的网络捕获不显示 HTTP 帖子。

Error as it appears on IE's dev tools

很正常的事情。服务器正确返回 json 并且所有浏览器都可以读取它。只有IE有这个错误,IE开发工具并没有真正让我看到服务器是否被调用。

我尝试在这次调用中将缓存设置为 false,但没有任何运气。

基本上我的整个设置都有效,只有 IE 有问题。我使用的是IE11。我收到了来自不同 IE 版本的用户的报告,该表单确实发布了该表单,但我的网站没有显示响应文本,而是要求用户将其下载为 .json 文件。所以也许这都是相关的。

谢谢!

最佳答案

此设置的问题非常简单。我的设置适用于所有浏览器,但事实上 JavaScript 为 ajax POST 声明了一个空 URL,这导致 IE 无法正常工作。底层 REST 客户端代码 (PHP) 可以安全地读取和设置 URL

我从 JS 中删除了 url 参数,它适用于 IE,同时不会破坏其他浏览器。

感谢大家的评论。

$("#formSubmitButton").click(function () {
$('#activity').show();

AttachValidation($("#form"));
if ($("#form").valid()) {
$.ajax({
cache: false,
type: "POST",
data: $('#form').serialize(),
success: function(data) {
ProcessResponse(data, "form");
},
dataType:'json'
});
}
else {
$('#activity').hide();
}
return false;
});

关于jquery - ajax POST 仅在 IE 中产生 SyntaxError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24727279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com