【问题标题】:Php file called by ajax isn't echoing javascript codeajax 调用的 PHP 文件不回显 javascript 代码
【发布时间】:2021-05-14 18:20:34
【问题描述】:

我正在尝试创建一个页面,用户可以在其中上传文件并选择他们想要通过电子邮件发送给的人。一旦他们点击提交,我就会阻止页面刷新并重置他们在表单中的输入。现在我想将他们之前输入的信息放到同一页面(页面的不同部分)的表格中。

【问题讨论】:

  • 你没有成功函数。但是为什么不直接返回 true 或 false 并显示或继续隐藏
  • 好吧,您对来自 Ajax 调用的响应什么也不做。返回 JavaScript 也不是一个好主意,因为您必须在不安全的客户端中对其进行 val()。
  • @epascarello 我之后使用它,代码与我正在尝试做的事情无关,这就是我没有包含它的原因。那我还有其他方法可以显示表格吗?
  • @mplungjan 我没有在此处包含成功功能,因为它正在工作。对不起,你是什么意思返回真或假?比如我在哪里做呢?
  • 返回 { "match" : true }{ "match" : false } 并查看回复:document.querySelector(".outputDiv").classList.toggle("hide",!response.match)。 getElementsByClassName 也返回一个节点列表,所以如果你坚持返回 javascript,你需要change[0].style.display = "block"

标签: javascript php html forms


【解决方案1】:

如果您确实想继续这个概念,您可以在 done() 函数中捕获 PHP 脚本的输出,将其插入页面上的元素中,然后运行 ​​eval()。像这样……

$.ajax({
    type: "POST",
    url: "../FileDrop/dbSystem.php",
    data: {tags: JSON.stringify(tags), file: 
          $('input[name=fileName]').val()};
}).success(function(result) {
  $( '#element' ).html(result);
  $( '#element script' ).each( () => { $(this).html().eval() }) 
});

但返回用于在页面中执行 javascript 的数据会更有意义 - 也就是说,将所有逻辑放在一起,而不是将其中的一部分拆分到 PHP 文件中。

<?php 
// php process that checks for 'valid'...
// create a json response
$output = array('valid' => 1);
echo json_encode($output);
?>

.... 在你的 JS 中

.success(function(result) {
  // result is a stringified JSON object. We need to convert it into an actual JSON object with parse()
  result = JSON.parse(result);
  // might not matter, but result.valid will be a number which JSON converts into a string. By adding the + right before the variable, that tells JS to use it as a number for the comparison
  if (+result.valid == 1) {
    $(".outputDiv").show();
  }
});

【讨论】:

  • 问题是,在我的 php 文件中,我正在验证用户输入是否与数据库匹配。如果他们这样做,那么我想显示表格。这就是为什么我对如何输出 js 代码有点困惑。那么我会捕获输出,然后使用 ajax,检查它是否正确并插入表行吗?
  • 输出所需的基本数据,然后输入现有 JS 中的 if 语句。我刚刚更新了我的答案以显示 onSuccess,如果存在正确的变量,您可以 $(".outputDiv").show(); - 不确定这是否回答了您的问题
  • 如果您不介意的话,您可以看看我发布的答案吗?
  • @ragin_lion - 一般来说,赞成或接受其他人的答案而不是将其复制并粘贴到新答案中是一种好习惯。要回答您的问题,请先确定 PHP 中的 $valid 变量,然后将其回显。您只是回显一条消息说“可以使用”或“无效”,然后让您现有的脚本获取该消息并显示或隐藏表格单元格。
  • 谢谢,我是新手,所以我不知道。我按照你说的做了,我回显“有效”或“无效”,ajax 调用成功,但我认为 if (result.valid == 'good to go') 不起作用。不知道我是不是写错了
猜你喜欢
  • 2013-06-14
  • 2017-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-23
相关资源
最近更新 更多