在 Ajax 调用上发送输入数据并在 php 文件中处理

Send Input Data on Ajax Call and process in php file

我想通过 Ajax 调用 PHP 文件发送更改时的输入字段数据,然后将此数据检入数据库(如果可用)然后显示错误消息,如果不可用则显示成功消息。

下面是我的代码 - Html 代码 -

<lable class="required">Guillemot Reference Number:<em>*</em></lable><span><input type="text" name="case_number" id="case_number" class="input-text required-entry" value="" onChange="checkReferenceNumber()"/> <p class="case_number_warning" style="color:red; vertical-align: bottom; font-size: smaller; display:inline;"> Already Exists </p></span>

Javascript -

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script type="text/javascript">
    jQuery(document).ready(function($){ 
     $('.case_number_warning').hide();
     $("#case_number").on('change', function(){
      $('.case_number_warning').hide();
      var datetime = d.getTime();
      var case_number = $('#case_number').val();
      $.ajax({
          url: '/checkReferenceNumber.php',
          type: 'POST',
          data:({
       action  : 'checkrefno',
       case_number : case_number
        }),
    
          success:function(result) {
       alert("Sent"); 
       var response = JSON.stringify(result);
       },
          error: function() { alert("Already Exists"); $('.case_number_warning').show(); }
      });      
     });
    });
    
    </script>
    <script>jQuery.noConflict();</script>

Php 文件 checkReferenceNumber.php 代码 -

<?php
set_time_limit(0);
require_once '/var/www/html/app/Mage.php';
umask(0);
ini_set('memory_limit', '-1');
Mage::app('default');
$connection = Mage::getSingleton('core/resource')->getConnection('core_write');

    $action = trim($_REQUEST['action']);
    $case_number = trim($_POST['case_number']);
    /*
    $action = 'checkrefno';
    $case_number = 'Ref-12345678';
    */

    if($action == 'checkrefno'){
        $refno_output = $connection->fetchOne("select reference_number from guillemot_reference_number where reference_number = '".$case_number."'");
        if($refno_output) {
            echo    "\nReferece no - ". $refno_output;
        }
    }
?>

在此我想检查输入字段数据在数据库中是否可用 Ajax onchange 事件如果数据可用它应该 return 消息表明数据可用或真或假。

我想从 php 代码中获取响应数据。如何从 php 代码 return 数据到 phtml 文件。并显示错误信息。

如有任何帮助,我们将不胜感激。

谢谢

您应该在 PHP 文件上使用 die(json_encode()); 函数

if($refno_output) {
            die(json_encode($refno_output));
        }

我看到你在 JS

中使用 JSON 从 PHP 获取数据
            success:function(result) {
            alert("Sent");  
            var response = JSON.stringify(result);
            },

因此,您可以 return JSON 中的字符串 PHP

if($action == 'checkrefno'){
    $refno_output = $connection->fetchOne("select reference_number from guillemot_reference_number where reference_number = '".$case_number."'");
    if($refno_output) {
        $return = array("success" => true, "refno" => $refno_output);
        echo json_encode($return);
    }else{
        $return = array("success" => false, "error" => "Some error");
        echo json_encode($return);
    }
}

并在 JS 中使用它

            success:function(result) {
            alert("Sent");  
            var err = false;
            var response = null;
            try{
                response = JSON.parse(result);
            }catch(e){
                err = true;
                console.error(e);
            }
            if(response.success && !err){
                //do something with response.refno
            }else{
                //if error
            }
            },

在 PHP 中,如果找到参考编号,则使用 exit,如

........
    if($action == 'checkrefno'){
        $refno_output = $connection->fetchOne("select reference_number from guillemot_reference_number where reference_number = '".$case_number."'");
        if($refno_output) {
            echo $refno_output;
            exit;
        }
    }
    echo 'NOTFOUND'; // status NOT FOUND ref code
    exit;
?>

在Jquery中使用

$("#case_number").on('change', function(){
    $('.case_number_warning').hide();
    var datetime = d.getTime();
    var case_number = this.value; // use simple this.value here
    $.ajax({
        url: '/checkReferenceNumber.php',
        type: 'POST',
        data:({
            action  : 'checkrefno',
            case_number : case_number
        }),
        success:function(result) {
            alert("Sent");  
            if(result==="NOTFOUND"){
                alert("Not Exists");
            }  else {
                alert("Ref Num "+result+" already Exists");
                $('.case_number_warning').show(); 
            }               
        } 
    });
});