在 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();
}
}
});
});
我想通过 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();
}
}
});
});