表单只提交一个值,使用AJAX将表单数据传递到同一页面中的PHP

时间:2017-08-04 08:20:38

标签: javascript php jquery html ajax

我需要在同一页面中将表单中的单个值传递给我的php。这可能不是创建另一个.php文件并将代码带到那里的选项,因为有很多事情发生。 这是我需要修复的代码的一部分,目前它只在代码在另一个文件上时才有效,因为$ _POST没有搞乱代码的其他部分。具体来说,我需要设法将表单中的“客户端”或“empre”传递给php。

HTML

startServiceInForeground()

PHP(同一页面,只是为了便于阅读而分开)

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/
libs/jquery/1.3.0/jquery.min.js">
</script>
<script type="text/javascript" >

 $(function() {

 if($(".cliente").click(function() {

    var name = $("#client").val();
    var dataString = 'client='+ name;

}))else if($(".empresa").click(function() {

    var name = $("#empre").val();
    var dataString = 'empre='+ name;
}));

$.ajax({
    type: "POST",
    data: dataString});
});
</script>
</head>
<body>
<form>
  <input name="client" type="text"><br>
  <input class="cliente" type="submit" value="Buscar cliente"/><br>
  <input name="empre" type="text"><br>
  <input class="empresa" type="submit" value="Buscar empresa"/><br>
  </form>

  //PHP HERE

  //HTML AGAIN
  </body>
</html>

2 个答案:

答案 0 :(得分:0)

为什么不使用单独的表单来处理数据? (您提到的PHP逻辑将与此提议的解决方案一起使用)

$(function() {
  $(".cliente").click(function(e) {
    e.preventDefault();
    alert('Going to post data for client, check the console log now');
    $.ajax({
    	url: $('form[name="client"]').attr('action'),
      type: "POST",
      data: $('form[name="client"]').serialize(),
      success: function(data){
      	console.log(data);
      },
      failure: function(error){}
    });
  });
  $(".empresa").click(function(e) {
    e.preventDefault();
    alert('Going to post data for empre, check the console log now');
    $.ajax({
    	url: $('form[name="empre"]').attr('action'),
      type: "POST",
      data: $('form[name="empre"]').serialize(),
      success: function(data){
      	console.log(data);
      },
      failure: function(error){}
    });
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form name="client" action="https://someurl.com/fileto.php">
  <input name="client" type="text"  value="some value"><br>
  <input class="cliente" type="submit" value="Buscar cliente"/>
</form>
<form name="empre" action="https://someurl.com/fileto.php">
  <input name="empre" type="text" value="some value"><br>
  <input class="empresa" type="submit" value="Buscar empresa"/>
</form>

答案 1 :(得分:0)

您可以在下面的同一个AJAX调用中组合并发送它,在PHP中你可以这样做:

$parameters = json_decode($_POST['params']);

$parameters将在该AJAX调用中发送所有变量。

我建议,不要为你的AJAX使用相同的页面。你应该将它保存在单独的文件中。这将使代码更清晰,更轻松,易读和易于调整。

$(function() {
  $(".cliente, .empresa").click(function(e) {
    e.preventDefault();
    var paramsToSend = {};
    if ($(this).hasClass('client'))
      paramsToSend['client'] = $('form[name="client"]').serialize();
    else
      paramsToSend['empre'] = $('form[name="client"]').serialize()
    $.ajax({
      url: 'index.php' //assuming this is index.php (same page)
      type: "POST",
      data: {
        params: JSON.stringify(paramsToSend)
      },
      success: function(data) {},
      failure: function(error) {}
    });
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form name="client">
  <input name="client" type="text" value="some value"><br>
  <input class="cliente" type="submit" value="Buscar cliente" />
</form>
<form name="empre">
  <input name="empre" type="text" value="some value"><br>
  <input class="empresa" type="submit" value="Buscar empresa" />
</form>

//PHP HERE //HTML AGAIN