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

时间:2016-02-25 03:51:11

标签: javascript php jquery ajax

这是我第一次尝试从localhost上传我的工作。我有一个ajax请求提交表单并从服务器获得somre响应。但成功方法触发,而错误方法正在触发。虽然它在class ClickListener implements ActionListener { protected int countA; public void actionPerformed(ActionEvent e) { count++; 上正常工作但由于某种原因它无法在localhost上运行。我认为这是ajax请求中的url,虽然在localhost上没问题,但是没有获取文件。这可能是什么原因以及我如何解决这个问题?

我检查了所有与此ajax请求相关的sql.ALl正常工作。

我的域名是:ezphp.tk

我的问题是在网址中附加文件位置就像我做的那样,或者我不得不用http://mydomain/filepath .....

ajax提交:

remote server

verifyanswer.php文件是:

 $.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');
           }
    });

3 个答案:

答案 0 :(得分:0)

我认为您的问题是ajax跨域。 您可以通过代码在php文件中设置:

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');  

或参考here来解决它

答案 1 :(得分:0)

在调用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的方法:

$('#yourForm').on('submit',(function(e) {
        e.preventDefault();
        var formData = $(this).serialize();
        $.ajax({
            type:'POST',
            url: $(this).attr('action'),
            dataType: "json", 
            data:formData,
            processData: false,
            success:function(data){
            alert(data);

            },
            error: function(data){
                alert('there are some errors');
            }
        });

    }));

这是通过自定义函数调用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);

答案 2 :(得分:0)

首先,你需要检查你从ajax请求中得到的确切错误,这是由cors还是别的引起的

更改你的jquery错误函数,如下所示:

error: function(xhr, status, error) {
  var err = eval("(" + xhr.responseText + ")");
  alert(err.Message);
}

如果您使用共享主机为您的网站,那么您需要允许您的网站可以使用此来自所有来源访问,有几种方法允许交叉来源:

  1. 在你已经重新设置的php文件中:添加标题以允许你的访问来源使用:header(&#34; Access-Control-Allow-Origin:*&#34;);
  2. 或者您可以使用.httaccess
  3. 配置所有网络

    有关cors enable的更多信息,您可以访问enable-cors.org