Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery ajax请求在远程服务器上不工作_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript jquery ajax请求在远程服务器上不工作

Javascript jquery ajax请求在远程服务器上不工作,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,这是我第一次尝试从localhost在Web主机上上载我的工作。我收到一个ajax请求,要求提交表单并从服务器获得响应。但是成功方法是而不是,相反,错误方法正在触发。虽然它在本地主机上工作正常,但出于某种原因,它在远程服务器上不工作。我认为是ajax请求中的url无法获取文件,尽管它在本地主机上工作正常。这可能是什么原因,我如何解决 我检查了所有与此ajax请求相关的sql。所有工作正常 我的域名是:ezphp.tk 我的问题是,在url中附加文件位置已经足够像我做的那样了,或者我不得不用类似…

这是我第一次尝试从localhost在Web主机上上载我的工作。我收到一个ajax请求,要求提交表单并从服务器获得响应。但是成功方法是而不是,相反,错误方法正在触发。虽然它在
本地主机
上工作正常,但出于某种原因,它在
远程服务器
上不工作。我认为是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);
}
如果您的网站使用共享托管,则需要允许您的网站可以从所有来源访问。使用此功能,有几种允许跨来源访问的方法:

  • 在重新加载的php文件中:添加了头,以允许您使用以下内容访问源代码:头(“访问控制允许源代码:”)
  • 或者您可以使用.httaccess配置所有web站点

  • 有关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);
    }