Javascript jquery ajax请求在远程服务器上不工作
这是我第一次尝试从localhost在Web主机上上载我的工作。我收到一个ajax请求,要求提交表单并从服务器获得响应。但是成功方法是而不是,相反,错误方法正在触发。虽然它在Javascript jquery ajax请求在远程服务器上不工作,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,这是我第一次尝试从localhost在Web主机上上载我的工作。我收到一个ajax请求,要求提交表单并从服务器获得响应。但是成功方法是而不是,相反,错误方法正在触发。虽然它在本地主机上工作正常,但出于某种原因,它在远程服务器上不工作。我认为是ajax请求中的url无法获取文件,尽管它在本地主机上工作正常。这可能是什么原因,我如何解决 我检查了所有与此ajax请求相关的sql。所有工作正常 我的域名是:ezphp.tk 我的问题是,在url中附加文件位置已经足够像我做的那样了,或者我不得不用类似…
本地主机
上工作正常,但出于某种原因,它在远程服务器
上不工作。我认为是ajax请求中的url无法获取文件,尽管它在本地主机上工作正常。这可能是什么原因,我如何解决
我检查了所有与此ajax请求相关的sql。所有工作正常
我的域名是:ezphp.tk
我的问题是,在url中附加文件位置已经足够像我做的那样了,或者我不得不用类似….的方式来处理它。
ajax提交:
$.ajax('../includes/verifyanswer.php',{
data:{
'answer_body': CKEDITOR.instances.content.getData(),
'userpost_post_id': <?php echo $postid;?>,
'users_user_id': <?php echo $userdata->user_id; ?>
},
type:"POST",
dataType:'json',
success:function(response){
alert('bal');
var obj=response;
alert(obj[0].answer_body);
$('#mainanswer').hide();
$('#answerform').hide();
$('#answerthisquestion').show();
var str="<div class='styleanswer' >"+obj[0]['answer_body']+"</div><div class='customcmntholder'></div><span id='customcomment' class='cmnt' onclick='letmecomment(event);'>Add a Comment...</span><form action='<?php echo $_SERVER['PHP_SELF']; ?>' method='post' name='cmntform'> <textarea data-id="+obj[0]['answer_id']+" class='customcmntform' placeholder=' add a comment......' ></textarea></form><hr>";
$('#answerwrapper').append(str);
$('#answerwrapper pre code').each(function(i, block) {
hljs.highlightBlock(block);
});
},
error:function(response){
alert('there are some errors');
}
});
我认为您的问题是ajax跨域。 您可以通过代码在php文件中设置:
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');
或者在调用ajax函数时,在第一个php页面上引用以解决此问题,请尝试以下两种方法之一:
<!-- This is your form -->
<form name="yourForm" id="yourForm" method="post" action="http://yourdomain.com/includes/verifyanswer.php" novalidate >
<input type="submit" />
</form>
这是通过自定义函数调用ajax:
function testFunction()
{
var yourparam1 = "abc";
var yourparam2 = "123";
$.ajax({
type: "POST",
url: "http://yourdomain.com/includes/verifyanswer.php",
dataType: "json",
data: {
param1 : yourparam1,
param2 : yourparam1
},
success: function(data) {
alert(data);
},
error: function(data){
alert('there are some errors');
}
});
}
在获取ajax json数据的php页面顶部添加以下行:
// PHP headers (at the top)
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json");
$output = "Hello world";
echo json_encode($output);
首先,您需要检查从ajax请求中得到的错误到底是什么,这是由cors还是其他原因引起的 更改jquery错误函数,如下所示:
error: function(xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
alert(err.Message);
}
如果您的网站使用共享托管,则需要允许您的网站可以从所有来源访问。使用此功能,有几种允许跨来源访问的方法:
有关cors enable的更多信息,请访问此处您是否检查了标题中的ajax请求url?这是什么意思?您正在ajax请求url中使用相对路径,请尝试使用静态远程url。ajax url可能有问题。您能简单地解释一下吗:(…在我的头上用
$替换您的ajax请求url。ajax('http://mydomain/includes/verifyanswer.php',{ ... });
但是我所有的文件都在同一台服务器上。你的解决方案是什么。我不明白。它与我的问题有什么关系?因此,你可以使用try catch
来捕捉php文件中的错误。如果你不知道错误,你就无法修复。它们都是php页面。你在谈论哪个php页面?还要确保在ajax调用中使用完整路径,例如。
// PHP headers (at the top)
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json");
$output = "Hello world";
echo json_encode($output);
error: function(xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
alert(err.Message);
}