我正在开发一些软件,它将从mysql数据库中获取信息并将其动态地抛到我们的表单上.不过,我遇到了几个问题.我将简要介绍一些功能.
当表单加载时,我们有大量的选择列表.这些都是通过PHP中的各种键/值的数组填充的.当我从一个列表中选择一个选项时,我们将其称为“客户”列表,点击我需要检查该客户是否有特殊标志(存储在数据库中),并根据该数据更新另一个选择列表.
我如何理解我的解决方案的核心是我需要点击一下javascript触发器,我有.调用的函数引用一个PHP页面,该页面通过类及其函数处理数据库查询.
<script>
function setService()
{ // The customer's "id" grabbed from the aforementioned customer selection list
customer = $('#customer').val();
$.get('thePage.PHP?key=setService?customer='+customer);
}
</script>
然后这个函数与我的PHP对话. CustomerProvider类100%工作.我在其他页面上对此进行了彻底测试.当我试图让我的选择列表改变时,问题就出现了.
<?
if(isset($_GET['key']) && $_GET['key'] == 'setService')
{
$customer = $_GET['customer'];
$customer = intval($customer);
$s = CustomerProvider::getHasContract($customer);
if ($s != '')
{ ?> <script>var element = document.getElementById('ticket_service');
element.value = 'Contracted Hours';</script> <? }
else return;
}
?>
我有史以来第一次用javascript进行编码,他们只是把我扔进了这个项目.我知道我的部分不像我想要的那样被读作html或输出.我知道PHP的每个其他部分和第一部分javascript似乎都正常执行.任何帮助都会非常感激.
解决方法:
你似乎走在正确的轨道上,但仅仅为了你自己的理智,这里有几个指针.对于像这样的情况,你不应该从PHP返回Javascript.相反,您应该依赖Javascript承诺等待仅包含数据的响应,并在返回值后继续执行客户端代码.看看这个:
<script>
function setService() { // The customer's "id" grabbed from the aforementioned customer selection list
customer = $('#customer').val();
$.get('thePage.PHP?key=setService?customer=' + customer, function(data) {
console.log(data + ' was returned from your PHP script!');
if(data.hasContract=='1')
$('#ticket_service').val('Contracted Hours');
else
$('#ticket_service').val('No Contracted Hours');
});
}
</script>
然后你的PHP脚本将如下所示:
<?
if(isset($_GET['key']) && $_GET['key'] == 'setService')
{
$customer = $_GET['customer'];
$customer = intval($customer);
$s = CustomerProvider::getHasContract($customer);
if ($s != ''){
$hasContract = 1;
}
else
$hasContract = 0;
echo json_encode(array('hasContract' => $hasContract));
}
?>
因此,仅返回客户端应用程序继续所需的数据…而不是应用程序逻辑
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。