php POST metod无法使用jquery Ajax或没有Ajax

时间:2016-09-29 09:07:16

标签: php jquery ajax post server

我在stackoverflow中搜索过这个问题并找到了一些答案,但是没有答案对我有所帮助。所以我再次发布它。我的php表单在localhost中的post方法工作正常,但相同的代码不在服务器(Linux服务器)工作我不知道实际的问题是什么。请帮助

  1. 我要提交的表单
  2. <form class="forma" id="forma" method="POST" action="contact-form.php" name="myForm" autocomplete="off">
      <div class="formWrapper">
    
        <div class="group">
          <input type="text" name="name" id="name">
          <span class="highlight"></span>
          <span class="bar"></span>
          <label>Name</label>
          <p class="error-red"></p>
    
        </div>
    
        <div class="group">
          <input type="text" name="eMail" id="eMail">
          <span class="highlight"></span>
          <span class="bar"></span>
          <label>Email</label>
          <p class="error-red"></p>
        </div>
    
        <div class="group">
          <input type="text" name="mobileNo" id="mobileNo">
          <span class="highlight"></span>
          <span class="bar"></span>
          <label>Mobile no.</label>
          <p class="error-red"></p>
        </div>
    
        <div class="group">
          <input type="text" name="message" id="message">
          <span class="highlight"></span>
          <span class="bar"></span>
          <label>Message</label>
    
        </div>
    
        <div class="captchaWrapper">
          <img src="captcha.php?rand=<?php echo rand(); ?>" id="captchaimgCont" style="margin-right: 14px;" alt="captcha">
    
    
          <a href="javascript: refreshCaptcha();" class="clickTorefreshAnchor">
            <i class="fa fa-refresh clickTorefresh" id="caprefresh">
    
                                            </i>
          </a>
    
          <div class="captchaInputWrapper group">
            <input type="text" id="6_letters_code" name="captcha">
            <span class="highlight"></span>
            <span class="bar"></span>
            <label>Enter the code here:</label>
            <p class="error-red"></p>
    
          </div>
        </div>
    
    
        <div class="submit submitBtn" id="consubmit">
          <button type="submit" name="sendmail" id="sendmail" class="sendMailBtn">Submit
          </button>
        </div>
    
      </div>
    
      <div class="clear"></div>
    
    </form>
    
    1. 我的jquery ajax代码
    2. jQuery(document).ready(function() {
        jQuery("#forma").submit(function(e) {
      
          e.preventDefault();
          e.stopImmediatePropagation();
      
          jQuery('#sendmail').html('Please wait...');
      
          jQuery.ajax({
            type: "post",
            url: './contact-form.php',
            data: jQuery("#forma").serialize(),
            dataType: "json",
            success: function(data) {
      
              jQuery('p.error-red').html('');
      
      
              if ('success' == data.result) {
      
      
                //jQuery("#forma")[0].reset();
      
                //jQuery('#response').append('<p class="successMessage">' + data.msg + '</p>');
                //  jQuery('#sendmail').html('Submit');
                window.location.href = "https://www.mrpmediaworks.com/thanks.php";
      
              }
      
              if ('error' == data.result) {
      
                var arr = data.msg;
                var element_arr = data.fieldname;
                count = '0';
                jQuery.each(arr, function(index, value) {
                  if (value.length != 0) {
      
                    jQuery('input[name=' + element_arr[count] + ']').parent('.group').find('p.error-red').html(value);
                  }
                  count++;
                });
                jQuery('#sendmail').html('Submit');
      
              }
      
            }
          });
      
          return false;
        });
      });
      
      1. 我的PHP代码
      2. <?php
              session_start();
              require_once('config.php');
        
              $email = '';
              $fieldname = array();
              $msg = array();
              $result = '';
              $count = '';
              $name =  $_Post["name"];
              $contact =  $_Post["mobileNo"];
              $email =  $_Post["eMail"];
              $msg_query =  $_Post["message"];
              $captcha =  $_Post["captcha"];
        
              echo $name;
              die();
        ?>
        

        只测试代码

        相同的代码适用于get

        我尝试从表单中移除操作,可能组合但注意工作。        编辑后

              4. .htaccess file
                        # browser requests PHP
                    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
                    RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]
        
                   # check to see if the request is for a PHP file:
                   RewriteCond %{REQUEST_FILENAME}\.php -f
                   RewriteRule ^/?(.*)$ /$1.php [L]
        

        这是我的htaccess文件中的唯一内容

2 个答案:

答案 0 :(得分:1)

我认为你搞砸了你的htaccess文件。如果可能,请在此处粘贴.htaccess文件代码。

编辑我的回答

Bingo发现你要从你的文件中删除.php扩展名的问题,但是在ajax请求中你已经将数据发布到contact-form.php。尝试从你的ajax请求中删除.php扩展名。试试希望这会有所帮助。

答案 1 :(得分:0)

只需创建一个函数来处理ajax请求。然后在函数内处理请求。为此,

从表单中删除操作。并将请求发送到提交上的功能,请参阅下面的例如。

 <form class="forma" id="forma" method="POST"  action="javascript:void(0);" name="myForm" autocomplete="off"  onsubmit="sendContactRequest();">

然后~sendContactRequest()〜将处理你的ajax请求。

function sendContactRequest(){
        jQuery('#sendmail').html('Please wait...');
        $.post("contact-form.php",jQuery("#forma").serialize(),function(result,status,xhr) { 
            if( status.toLowerCase()=="error".toLowerCase() ) { 
                alert("An Error Occurred.."); // or do something that you can handle the error request.
            }else {  //success response
            }
        });
    }

请尝试一下。在我的情况下,它运作正常。