经过长时间的研究和调试,我意识到java脚本不是问题,我更倾向于抛出一个cross origin resource exception
,因为ajax请求无法读取我的服务器脚本或者没有权限访问我的服务器脚本。
所以我尝试下面的代码,但仍然是同样的问题,我把问题放在红色块打击,我的java脚本也在下面和我的服务器脚本
$('#send').on('click', function(e) {
var name = $('#name').val();
var email = $('#email').val();
var message = $('#message').val();
alert("sending " + name + email + message);// this part is now working fine
$.ajax({
type: "POST",
url: "https://xxxxxx/xxxxx/php/contact/maincontact.php",
data: {
nme: name,
ema: email,
msg: message
},
dataType: 'json',
timeout: 10000,
async: true,
cache: true,// I removed the header which used to here before
error: function(jqXHR, textStatus, errorThrown) {
alert("error : " + errorThrown + " text :" + textStatus + " j :" + jqXHR.status);
alert(jqXHR.responseText);
},
success: Succeeded
});
});
function Succeeded(result) {
alert("Successing");
var data = JSON.parse(result[0]);
try {
$('#name').val(" ");
$('#email').val(" ");
$('#message').val(" ");
if (data == true) {
alert("We will Contact you shortly");
} else {
alert("OOpps! something went wrong");
}
} catch (e) {
alert("You may not enter " + e);
}
}
阻止跨源请求:同源策略禁止在https://xxxxxxxx/xxxxxx/php/contact/maincontact.php读取远程资源。 (原因:在CORS标题中缺少令牌' access-control-allow-origin'来自CORS预检频道的访问控制允许标题)。
<!-- php codes -->
<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');
require_once('contact.php');
if(!empty($_POST)){
$addcase = new contact();
$data['vlu'] = $addcase->add($_POST['nme'], $_POST['ema'], $_POST['msg']);
echo json_encode($data);
}else{
echo "Not properly parsed";
}
?>
答案 0 :(得分:0)
错误消息显示:
在CORS预检频道的CORS标题“Access-Control-Allow-Headers”中缺少令牌“access-control-allow-origin”
因此,当您提出请求时,您正试图将access-control-allow-origin
放入标题中。 (该消息表示浏览器询问服务器是否允许在跨源Ajax中发送该标头,并且服务器没有说可以这样做)。
这没有任何意义。 Access-Control-Allow-Origin是响应标头。没有理由把它放在请求上。
现在,您提供的代码不会尝试设置该标头。这表明你的代码中的别处正试图普遍地设置它(可能是通过ajaxsetup)。
您需要找到尝试设置它的位置并删除该代码。