Ajax没有得到php结果的响应

Ajax not getting response of php result

本文关键字:结果 响应 php Ajax      更新时间:2023-09-26

我试图在没有页面刷新的情况下从php返回结果,但它根本不做任何事情,而是将我重定向到multi-pagerank-checker.php?url=google.com&go=这样的url,我也没有得到任何成功消息alert('form was submitted');

Ajax调用:

<script type="text/javascript">
  $(function () {
    $('Pagerank Form').on('submit', function (e) {
      $.ajax({
        type: 'post',
        url: 'multi-pagerank-checker.php', // this is the actual url of the page (tried location.href) but did not work
        data: $('Pagerank Form').serialize(),
        success: function () {
          alert('form was submitted');
        }
      });
      e.preventDefault();
    });
  });
</script>

现在在multi-pagerank-checker.php中我有

<form id="check" onsubmit="return validatef()" name="Pagerank Form" class="clearfix">
  <textarea name="url" id="url" onkeydown="foo(this,100)" onfocus="validateonfocus()" onblur="validateonblur()">Enter Domains Separated By New Line -MAX 100 DOMAINS-</textarea>
  <input id="submit" type="submit" name="go" value="" />
</form>

以及脚本如何在同一页面上被处理。

<?php
  include("lib/functions.php");
/*if(isset($_POST['url'])) 
  { */
    $urls = $_POST['url']; 
    $replace="http://www.";
    $urls = str_replace($replace, '', $urls);
//} 
  if($urls == "") 
  {} else {
   echo "<table class='shadow' border='0' width='60%' style='margin:0 auto; background:#EFEFEF;border-bottom-left-radius:1em;border-bottom-right-radius:1em;font: 14px Lucida Sans Unicode; text-align:center;'><tr style='font-weight:bold;background: #14a3b4;color: #f5f5f5; font: 15px Lucida Sans Unicode; text-align: center;height:40px;'><td>Website Url</td><td>Google Page Rank</td></tr>";           
   $urls1 = split("'r'n", $urls);
   foreach ($urls1 as $urls) {
     $explode_http = explode("http://", $urls);
     $url_out_http = $explode_http[1];
     $explode_backslash = explode("/", $url_out_http);
     $srd = explode("/",  $explode_http[1]);
     if($srd[0] != "") {
       $url = $url_out_http;
     } elseif($url_out_http == "") {
         $url_d = $explode_http[0];
         $url = rtrim($url_d,"/");
     } else {
        $url_d = $explode_backslash[0];
        $url = rtrim($url_d,"/");
     }
     $url_take_www = str_replace("www.www.$url", "$url", "$url");
     $www_url = "www.".$url_take_www;
     $url = str_replace(" ", "", $url);
     $check_pr = getpr($url);
     $width  = $check_pr * 5;
    // FAKEPAGE RANK CHECKER
     $data = get_data("http://www.google.com/search?q=info:$url");
     $pos = preg_match('/<div id=resultStats>(.*?)<'/div>/is',$data);
?> 
    <tr>
      <td><?php echo $url;?></td>
      <td style='text-align:center;'><?php echo $check_pr;?>/10</td>
    </tr>
   <!-- in this tr i echo the result -->
<?php } ?> <!--foreach ends here-->
</table>

我错过了什么?如果isset post的旧方法工作得很好,只是我不想重新加载页面并使用ajax。请帮助我,我是一个新手在Ajax和Jquery。

编辑
function validatef() {
 var validatef = document.getElementById('url').value;
 var validaterror = document.getElementById('errorvalidate');
 if (validatef == 'Enter Domains Separated By New Line -MAX 100 DOMAINS-') {
  validaterror.textContent = 'Please enter domain names in the field.';
  return false;
 }
 else {
  validaterror.textContent = '';
  var load = document.getElementById('loading'); 
  load.style.display='block'; 
  document.getElementById('check-web-site-ranking').style.height = '200px'; 
  load.innerHTML = '&lt;img src=/images/loading.gif&gt;';
}
}

问题是您试图拦截标记,而不是具有该名称的表单。你应该这样做:

$('form[name="Pagerank Form"]').on('submit', function (e) {

尽管我建议你在表单上指定一个类,并且这样做:

$('.formclass').on('submit', function (e) {