AJAX无法将多个数据传递给PHP

时间:2014-05-06 06:45:13

标签: php jquery ajax twitter-bootstrap

在下面的代码中,输入1,2,3是引导输入字段,文件是'processor.php'本身。

<script>
   $('#create1').click(function(e) {
      var ip1 = $('#input1').val();
      var ip2 = $('#input2').val();
      var ip3 = $('#input3').val();

      $.ajax({
          url  : 'processor.php',
          type : 'POST',
          data : {
            obj1 : ip1,
            obj2 : ip2,
            obj3 : ip3
          }
      });
   });
<script>

稍后,在文件末尾,我有以下PHP代码

<?php 
if(isset($_POST['obj1']) {
  echo $_POST['obj1'];
  echo $_POST['obj2'];
  echo $_POST['obj3'];
}
?>

如何,它只显示ip1的内容,并为我提供obj2,obj3的错误,如下所示:注意:未定义的索引'obj2'开启:...

任何人都可以告诉我为什么会发生这种情况以及如何解决这个问题。我是新手

6 个答案:

答案 0 :(得分:0)

 Try this...

 <script>
  $('#create1').click(function(e) {
  var ip1 = $('#input1').val();
  var ip2 = $('#input2').val();
  var ip3 = $('#input3').val();
  var dataString = "obj1="+ip1+"&obj2="+ip2+"&obj3="+ip3; 
  $.ajax({
      url  : 'processor.php',
      type : 'POST',
      data : dataString
  });
 });
 <script>

答案 1 :(得分:0)

    <?php
        $obj1    = (isset($_POST['obj1'])    ? $_POST['obj1']    : '');
        $obj2   = (isset($_POST['obj2'])   ? $_POST['obj2']   : '');
        $obj3 = (isset($_POST['obj3']) ? $_POST['obj3'] : '');
       echo $obj1;
       echo $obj2;
       echo $obj3;
    ?>

答案 2 :(得分:0)

您只是在检查是否设置了$_POST['obj1']。不是其他人,所以如果他们是空的,你可能会收到失败通知。

你得到的错误注意:未定义的索引'obj2'开启:...... 这意味着它试图访问的数组的索引不存在。换句话说,$ _POST ['obj2']没有赋值给它。

在尝试使用它之前,您需要单独检查每个变量。

$object1 = ""; // Set a default value
if(isset($_POST['obj1']))
{
  $object1 = $_POST['obj1']; // Assign the $_POST value if one exists
}

// Now repeat for the rest
$object2 = ""; // Set a default value
if(isset($_POST['obj2']))
{
  $object2 = $_POST['obj2']; // Assign the $_POST value if one exists
}

$object3 = ""; // Set a default value
if(isset($_POST['obj3']))
{
  $object3 = $_POST['obj3']; // Assign the $_POST value if one exists
}

// Now $object1 will either have the default value, or the $_POST value if one exists
echo $object1;
echo $object2;
echo $object3;

注意:为了便于调试,您可以使用var_dump();查看页面上变量的内容。

var_dump($_POST);

这有助于确认值/数组/对象包含您期望的值。

答案 3 :(得分:0)

<script>
   $('#create1').click(function(e) {
      var ip1 = $('#input1').val();
      var ip2 = $('#input2').val();
      var ip3 = $('#input3').val();

      $.ajax({
          url  : 'processor.php',
          type : 'POST',
          data : {obj1="+ip1+"&obj2="+ip2+"&obj3="+ip3}
      });
   });
<script>

或者如果这不起作用 将数据作为一个字符串发送,然后在php

中分隔
 data : {obj1="+ip1+"%%"+ip2+"%%"+ip3}

&#34; %%&#34;是分隔符

希望这会有所帮助

答案 4 :(得分:0)

 $('#create1parentcontainer').on("click","#create1",function(e) {
      var ip1 = $('#input1').val();
      var ip2 = $('#input2').val();
      var ip3 = $('#input3').val();

      $.ajax({
          url  : 'processor.php',
          type : 'POST',
          data : {
            "obj1" : ip1, //passing key set in ""
            "obj2" : ip2,
            "obj3" : ip3
          }
      });
   });

并在php下面设置代码

<?php
        $obj1    = (isset($_POST['obj1'])    ? $_POST['obj1']    : '');
        $obj2   = (isset($_POST['obj2'])   ? $_POST['obj2']   : '');
        $obj3 = (isset($_POST['obj3']) ? $_POST['obj3'] : '');
       echo $obj1;
       echo $obj2;
       echo $obj3;
    ?>

并且还会在控制台中看到您在ajax中发送的确认请求可能是控制台中显示的错误

答案 5 :(得分:0)

<script>
  $('#create1').click(function(e) {
  var ip1 = $('#input1').val();
  var ip2 = $('#input2').val();
  var ip3 = $('#input3').val();

  $.ajax({
      url  : 'processor.php',
      type : 'GET',
          data : {
            'obj1' : ip1,
            'obj2' : ip2,
            'obj3' : ip3
          }
      });
   });
</script>

<?php
if (!empty($_GET['obj1']))
{
 echo $_GET['obj1'];
}
...
?>

请注意,如果您告诉我们哪个文件显示通知错误?