php Метод POST не работает с jquery Ajax или без Ajax


Answers

Просто сделайте одну функцию для обработки запроса ajax. Затем обработайте запрос внутри функции. Чтобы сделать это,

Удалите действие из формы. и отправьте запрос на функцию on on submit, см. ниже, например.

 <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
            }
        });
    }

Пожалуйста, попробуйте это. В моем случае это работает отлично.

Question

Я искал вопрос в и нашел несколько ответов, но мне не помогло. Поэтому я отправляю его снова. Моя php-форма с методом post в localhost работает нормально, но тот же код не работает на сервере (linux-сервер). Я не знаю, в чем проблема. Пожалуйста, помогите

  1. форма, которую я хочу отправить
<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
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-код
<?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 файле




Links