我有一个页面,我在其中使用 jQuery load() 方法根据某些字段的发布请求显示结果表。但是我需要这个 load() 来显示表格,如果在 PHP 脚本中满足条件,我也会通知 javascript,所以我可能需要一个 json 响应。我不知道是否可以使用 complete() 回调来实现这一点。我只需要将一个变量从我的 PHP 脚本传递到 javascript。
我使用 load() 是因为我相信其他 ajax 方法需要从 javascript 执行 HTML 模板部分,对吗?
希望我说清楚了,谢谢
更新 1:
这是我的js代码:
$("#listaNegraView").load('procesos/funcionesAjax.php',
{accion: 'listaNegra',
nombres: $("#nombres").val(),
apellidoP: $("#apellidoP").val(),
apellidoM: $("#apellidoM").val(),
nacimiento: $("#nacimiento").val()},
function(data){console.log(data);}
);
这是 PHP 脚本:
case 'listaNegra':
$_POST['nombres'] = mb_convert_encoding($_POST['nombres'], 'Windows-1252', 'UTF-8');
$_POST['apellidoP'] = mb_convert_encoding($_POST['apellidoP'], 'Windows-1252', 'UTF-8');
$_POST['apellidoM'] = mb_convert_encoding($_POST['apellidoM'], 'Windows-1252', 'UTF-8');
$listaNegra = $personaDB->existsPersonaListaNegra($_POST);
$pct100 = false;
if(!empty($listaNegra) && is_array($listaNegra)){
foreach($listaNegra as &$persona){
$persona['match'] = '';
$porcentaje = 80;
if(strtolower($persona['nombres']) == strtolower($_POST['nombres'])){
$persona['match'] .= 'name';
$porcentaje += 10;
}
if($_POST['nacimiento'] == $persona['fecha_nacimiento']){
$persona['match'] .= 'date';
$porcentaje += 10;
}
$persona['porcentaje'] = $porcentaje;
if($porcentaje == 100)
$pct100 = true;
}
unset($persona);
}
include(ROOT.RUTA_TPL.'ventas/listanegra.tpl.php');
break;
更新 2:
具体来说,我要传递给 jasvascript 的条件是变量 $pct100
最佳答案
您是“直接”输出 HTML 代码,所以我认为,作为一种快速解决方法,您应该将 $pct100 写入隐藏的字段/dom 元素中,然后在您的 javascript 代码中使用完整的回调访问它。
这是我建议的例子
$("#listaNegraView").load(
'procesos/funcionesAjax.php',
{accion: 'listaNegra',
nombres: $("#nombres").val(),
apellidoP: $("#apellidoP").val(),
apellidoM: $("#apellidoM").val(),
nacimiento: $("#nacimiento").val()
},
function(data){
$('#where-to-put-html-code').html(data);
var pct100 = $('#where-to-put-html-code #hidden-field-id').val() == '1' ? true : false;
}
);
根据提问者的建议添加的答案。
关于javascript - jQuery load() 返回 json 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21167611/