使用PHP获取AJAX POST

时间:2019-03-02 04:28:32

标签: php jquery ajax

我在表单中有一个drpcategory下拉列表。我将在下面粘贴下拉代码;

<div class="form-group">
     <label>Category</label>
     <select class="form-control bg-dark btn-dark text-white" id="drpcategory" name="drpcategory" required>
     <?php
          $category = ''.$dir.'/template/post/category.txt';
          $category = file($category, FILE_IGNORE_NEW_LINES);

          foreach($category as $category)
          {
              echo "<option value='".$category."'>$category</option>";
          }
     ?>
     </select>
</div>

然后,每次我在下面的post下拉列表中进行选择时,我都会AJAX drpcategory

<script>
$(function(){

$('#drpcategory').on('change',function()
{

$.ajax({
method: 'post',
data: $(this).serialize(),
success: function(result) {
console.log(result);
}
});

});    

});
</script>

这似乎正在起作用,因为每次我进行以下操作时,我都会在 Chrome 浏览器> 检查> 网络标签中获得如下所示的输出drpcategory中的选择。这是屏幕截图;

Google Chrome Developer Tools Capture

问题是如何在同一页面中使用PHP捕获post并在同一页面中使用PHP捕获此AJAX数据?到目前为止,我已经尝试过了;

echo

我正在寻找仅结合使用PHP,JQuery和AJAX的解决方案。

此问题后来得到更新,并在此处回答AJAX POST & PHP POST In Same Page

5 个答案:

答案 0 :(得分:1)

首先,此行-> 类型:$(this).attr('post')应为 type:$(this).attr('method'), 。因此,这将得到值** type:post **和

据我了解,每当您从 drpcategory 中选择选项时,您都要求发送Ajax。您为什么要为此提交整个表格。如果我在你那里,我应该按照以下方式解决这个问题

$("#drpcategory").change(function(){
e.preventDefault();
var drpcategory=$(this).val();
$.ajax({
   type: 'post',
   data: drpcategory,
   success: function(result) {
        console.log(result);
   }
});
});

在您的php端,您可以获取数据,

echo $_POST['drpcategory'];

答案 1 :(得分:0)

我建议您阅读有关ajax函数的文档,我试图对其进行复制,并且必须解决此问题:

$.ajax({
    // If you don't set the url
    // the request will be a GET to the same page
    url: 'YOU_URL',
    method: 'POST', // I replaced type by method
    data: $(this).serialize(),
    success: function(result) {
        console.log(result);
    }
});

http://api.jquery.com/jquery.ajax/

输出enter image description here

答案 2 :(得分:0)

请尝试以下代码:

$.post('URL', $("#FORM_ID").serialize(), function (data)
{
  alert('df);
}

答案 3 :(得分:0)

First change to $value

<div class="form-group">
 <label>Category</label>
 <select class="form-control bg-dark btn-dark text-white" id="drpcategory" name="drpcategory" required>
 <?php
      $category = ''.$dir.'/template/post/category.txt';
      $category2 = file($category, FILE_IGNORE_NEW_LINES);

      foreach($category2 as $value)
      {
          echo "<option value='".$value."'>".$value."</option>";
      }
 ?>
 </select>

然后添加网址

<script>
 $(function()
 {
   $('#form').submit(function(e)
   { 
      e.preventDefault();
      $.ajax({
          url:'folder/filename.php',
          type: 'post',
          data: '{ID:" . $Row[0] . "}',
          success: function(result) {
              console.log(result);
          }
      });
   });
   $('#drpcategory').on('change',function()
   {
      $("#form").submit();
   });
 });

尝试请求

if(isset($_REQUEST['ID']))

结果将/应该发送回同一页面

答案 4 :(得分:0)

我认为您在ajax jQuery请求中有一个错误语法错误,因为ajax发布'http://example.com/?page=post&drpcategory=Vehicles'不会在浏览器的“网络”标签中返回此类型的url。

<?php var_dump($_POST); exit; ?> please do this statment in your php function if anything posted to php page it will dump.

这里是ajax请求示例

$("#drpcategory").change(function(){

e.preventDefault();

var drpcategory = $(this).val();

$.ajax({

type:'post',

数据:drpcategory,

成功:函数(结果){

    console.log(result);

}

});

});

`