jQuery Ajax 就绪状态 0 状态 0 在 Windows 8 (8.1) 仅在 Chrome
jQuery Ajax readystate 0 status 0 in Windows 8 (8.1) on Chrome ONLY
我有一点 jQuery 正在做一个 ajax 电话。该脚本在 IE 和 Chrome 中仅在 Win 8.1 中存在问题,但是,我更改了一些内容(包括省略可能导致问题的关闭 php 标记),现在 IE 可以正常工作并在我的Win 8.1 在 Chrome 上运行,但客户端仍然报告问题。
任何人都可以看到我的脚本有什么问题会导致此问题仅在 Chrome 上的 Win 8.1 上失败吗? (顺便说一句,Safari 和 Opera 可能没有经过客户端测试,因此也可能会失败)。
我已经在 SO 和其他 question/answer 网站以及许多不同的相关论坛等上阅读了几个小时。我尝试了许多不同的建议,但没有成功。
显然,人们首先想到的是跨域问题,站点托管在 "add-on" 域上,但我在同一 URL 上调用脚本。我应该改用主域 URL 来调用它吗? (暂时搞不懂那个主域名是什么,看这个问题:)
客户端正在从 ajax 错误块中获取警报:
readystate = 0
status = 0
responseText = ''
statusText = 'error'
非常感谢任何帮助,我已经坚持了几个星期了。
这是我的 jQuery:
$('#bkdl-submit').on('click', function(e) {
e.preventDefault();
var tempvar = $('#bkdl-email').val();
if (IsEmail(tempvar)) {
$('#loading-image').show();
$('#bkdl-submit').hide();
$.ajax({
url: "http://addondomain.com/wp-content/themes/html/bkdl-ajax.php?nocache="+Date.now(),
method: "POST",
data: {
email: tempvar
},
success: function (data) {
$("#bkdl-email").css('background-color', '#f00');
$("#bkdl-email").val('');
$("#hidlink").attr('href', data);
$("#hidlink").text('Click to Download');
$("#hidlink").show();
$("#bkdl-submit").hide();
},
complete: function () {
$('#loading-image').hide();
},
error: function (xhr, strError, strHttpStatus) {
alert(JSON.stringify(xhr, null, 2));
alert(strHttpStatus);
}
});
} else {
alert('Invalid Email');
}
return false;
});
AJAX PHP 脚本以防万一...
<?php
define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
if(!IS_AJAX) {die('Restricted access1');}
$pos = strpos($_SERVER['HTTP_REFERER'],getenv('HTTP_HOST'));
if($pos===false) { die('Restricted access'); }
require_once 'Ctct/autoload.php';
use Ctct\ConstantContact;
use Ctct\Components\Contacts\Contact;
use Ctct\Components\Contacts\ContactList;
use Ctct\Components\Contacts\EmailAddress;
use Ctct\Exceptions\CtctException;
define("APIKEY", "xxxxxxxxxxxxxxxxxxxxxxxxxx");
define("ACCESS_TOKEN", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
$cc = new ConstantContact(APIKEY);
// check if the form was submitted
if (isset($_POST['email']) && strlen($_POST['email']) > 1) {
$email = strip_tags(htmlentities(trim($_POST['email'])));
$action = "Getting Contact By Email Address";
try {
// check to see if a contact with the email addess already exists in the account
$response = $cc->getContactByEmail(ACCESS_TOKEN, $email);
// create a new contact if one does not exist
if (empty($response->results)) {
$action = "Creating Contact";
$contact = new Contact();
$contact->addEmail($_POST['email']);
$contact->addList('xxxxxxxxxxxxx');
$contact->first_name = '';
$contact->last_name = '';
$returnContact = $cc->addContact(ACCESS_TOKEN, $contact);
// update the existing contact if address already existed
} else {
$action = "Updating Contact";
$contact = $response->results[0];
$contact->addList('xxxxxxxxxxxx');
$contact->first_name = '';
$contact->last_name = '';
$returnContact = $cc->updateContact(ACCESS_TOKEN, $contact);
}
echo 'http://addondomain.com/wp-content/themes/html/giveaway.pdf';
// catch any exceptions thrown and email to dev
} catch (CtctException $ex) {
$errorvar = print_r($ex->getErrors(), true);
mail('deverrors@gmail.com', 'test', $errorvar);
die();
}
} else {
echo 'Invalid Email'; exit;
}
exit;
这实际上是 ajax 文件末尾的小 ?>
。
我知道你应该忽略它们,每当我在文件底部看到它们时,我都会尝试删除它们,但我从来不知道它会导致这样的问题,调用 ajax。
显然是 Win8 中 MS 的新安全策略与此有关。我仍然不太清楚它是如何发挥作用的,但这里有人告诉我。
所以是的...今天的课程...
不要使用 PHP 结束标记关闭您的 PHP 文件 ?> 否则您可能在 win8
中遇到问题
我有一点 jQuery 正在做一个 ajax 电话。该脚本在 IE 和 Chrome 中仅在 Win 8.1 中存在问题,但是,我更改了一些内容(包括省略可能导致问题的关闭 php 标记),现在 IE 可以正常工作并在我的Win 8.1 在 Chrome 上运行,但客户端仍然报告问题。
任何人都可以看到我的脚本有什么问题会导致此问题仅在 Chrome 上的 Win 8.1 上失败吗? (顺便说一句,Safari 和 Opera 可能没有经过客户端测试,因此也可能会失败)。
我已经在 SO 和其他 question/answer 网站以及许多不同的相关论坛等上阅读了几个小时。我尝试了许多不同的建议,但没有成功。
显然,人们首先想到的是跨域问题,站点托管在 "add-on" 域上,但我在同一 URL 上调用脚本。我应该改用主域 URL 来调用它吗? (暂时搞不懂那个主域名是什么,看这个问题:
客户端正在从 ajax 错误块中获取警报:
readystate = 0
status = 0
responseText = ''
statusText = 'error'
非常感谢任何帮助,我已经坚持了几个星期了。
这是我的 jQuery:
$('#bkdl-submit').on('click', function(e) {
e.preventDefault();
var tempvar = $('#bkdl-email').val();
if (IsEmail(tempvar)) {
$('#loading-image').show();
$('#bkdl-submit').hide();
$.ajax({
url: "http://addondomain.com/wp-content/themes/html/bkdl-ajax.php?nocache="+Date.now(),
method: "POST",
data: {
email: tempvar
},
success: function (data) {
$("#bkdl-email").css('background-color', '#f00');
$("#bkdl-email").val('');
$("#hidlink").attr('href', data);
$("#hidlink").text('Click to Download');
$("#hidlink").show();
$("#bkdl-submit").hide();
},
complete: function () {
$('#loading-image').hide();
},
error: function (xhr, strError, strHttpStatus) {
alert(JSON.stringify(xhr, null, 2));
alert(strHttpStatus);
}
});
} else {
alert('Invalid Email');
}
return false;
});
AJAX PHP 脚本以防万一...
<?php
define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
if(!IS_AJAX) {die('Restricted access1');}
$pos = strpos($_SERVER['HTTP_REFERER'],getenv('HTTP_HOST'));
if($pos===false) { die('Restricted access'); }
require_once 'Ctct/autoload.php';
use Ctct\ConstantContact;
use Ctct\Components\Contacts\Contact;
use Ctct\Components\Contacts\ContactList;
use Ctct\Components\Contacts\EmailAddress;
use Ctct\Exceptions\CtctException;
define("APIKEY", "xxxxxxxxxxxxxxxxxxxxxxxxxx");
define("ACCESS_TOKEN", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
$cc = new ConstantContact(APIKEY);
// check if the form was submitted
if (isset($_POST['email']) && strlen($_POST['email']) > 1) {
$email = strip_tags(htmlentities(trim($_POST['email'])));
$action = "Getting Contact By Email Address";
try {
// check to see if a contact with the email addess already exists in the account
$response = $cc->getContactByEmail(ACCESS_TOKEN, $email);
// create a new contact if one does not exist
if (empty($response->results)) {
$action = "Creating Contact";
$contact = new Contact();
$contact->addEmail($_POST['email']);
$contact->addList('xxxxxxxxxxxxx');
$contact->first_name = '';
$contact->last_name = '';
$returnContact = $cc->addContact(ACCESS_TOKEN, $contact);
// update the existing contact if address already existed
} else {
$action = "Updating Contact";
$contact = $response->results[0];
$contact->addList('xxxxxxxxxxxx');
$contact->first_name = '';
$contact->last_name = '';
$returnContact = $cc->updateContact(ACCESS_TOKEN, $contact);
}
echo 'http://addondomain.com/wp-content/themes/html/giveaway.pdf';
// catch any exceptions thrown and email to dev
} catch (CtctException $ex) {
$errorvar = print_r($ex->getErrors(), true);
mail('deverrors@gmail.com', 'test', $errorvar);
die();
}
} else {
echo 'Invalid Email'; exit;
}
exit;
这实际上是 ajax 文件末尾的小 ?>
。
我知道你应该忽略它们,每当我在文件底部看到它们时,我都会尝试删除它们,但我从来不知道它会导致这样的问题,调用 ajax。
显然是 Win8 中 MS 的新安全策略与此有关。我仍然不太清楚它是如何发挥作用的,但这里有人告诉我。
所以是的...今天的课程...
不要使用 PHP 结束标记关闭您的 PHP 文件 ?> 否则您可能在 win8
中遇到问题