如何使用AJAX分离PHP响应

时间:2018-07-27 19:00:10

标签: php ajax

我有一个首页,其中包含具有4个不同字段的表单。到目前为止,我已经将此字段发布到了我的PHP处理程序中。在PHP方面,每个输入字段都有4个测试和4个else / if语句。问题是我的AJAX代码对所有4个测试都返回一个响应。因此,我可以在首页底部打印此响应。我想要的是在每个输入字段中显示4个单独的响应。

HTML:

<form action="javascript:void(0);">
    <div>
        <label>
            <span>Item 1</span>
            <select name="TestItem1">
                <option>value1</option>
                <option>value2</option>
                <option>value3</option>
            </select>
        </label>
    </div>
    <div>
        <label>
            <span>Item 2</span>
            <input type="text" name="TestItem2">
        </label>
    </div>
    <div>
        <label>
            <span>Item 3</span>
            <input type="text" name="TestItem3">
        </label>
    </div>
    <div>
        <label>
            <span>Item 4</span>
            <input type="text" name="TestItem4">
        </label>
    </div>
    <div>
        <button type="submit">Check</button>
    </div>
</form>
<div id="result"></div>

AJAX通话

    $(document).ready(function(){ 
        $('form').submit( postgonder ) 
    }); 

    function postgonder() 
    {          
        $.post('result.php', $('form').serialize(),function(veri){$('#result').html(veri)}); 
    } 

PHP:

<?
$testitem1=$_POST['TestItem1'];
$testitem2=$_POST['TestItem2'];
$testitem3=$_POST['TestItem3'];
$testitem4=$_POST['TestItem4'];     

$test1 = (some tests of $testitem1);
    if(empty($testitem1)) {
    echo "-";
  }
    else if($test1) {
    echo "successful";
  }
  else {
    echo "failed";
  }
$test2 = (some tests of $testitem2);
    if(empty($testitem2)) {
    echo "-";
  }
    else if($test2) {
    echo "successful";
  }
  else {
    echo "failed";
  }
$test3 = (some tests of $testitem3);
    if(empty($testitem3)) {
    echo "-";
  }
    else if($test3) {
    echo "successful";
  }
  else {
    echo "failed";
  }
$test4 = (some tests of $testitem4);
    if(empty($testitem4)) {
    echo "-";
  }
    else if($test4) {
    echo "successful";
  }
  else {
    echo "failed";
  }
?>

我的AJAX呼叫返回: 如果表单为空或“成功成功--”等,则为“失败---”。

1 个答案:

答案 0 :(得分:2)

查看您对AJAX的处理结果:

function(veri){$('#result').html(veri)});

意味着您希望php返回一些格式化的HTML。

让它格式化!代替:

$test1 = (some tests of $testitem1);
  if(empty($testitem1)) {
  echo "-";
} elseif($test1) {
  echo "successful";
} else {
  echo "failed";
}

这样做:

$respArray = [];
$test1 = (some tests of $testitem1);
if(empty($testitem1)) {
  $respArray['test1'] = "-";
} elseif($test1) {
  $respArray['test1'] = "successful";
} else {
  $respArray['test1'] = "failed";
}

对test2,test3等进行相同的转换。 这样,您将收集数组中的所有响应。 然后执行HTML输出:

$html = '';
foreach($respArray as $key=>$status){
    $html.='<p>'.$key.' : '.$status.'</p>';
}
echo $html;

希望这个示例可以为您带来一些其他的建议。