RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 954116
Accepted
Sturmer
Sturmer
Asked:2020-03-09 04:32:01 +0000 UTC2020-03-09 04:32:01 +0000 UTC 2020-03-09 04:32:01 +0000 UTC

如何在不加载页面的情况下从 PHP 运行 JS

  • 772

有以下项目架构:

  1. form.php- 生成带有表格的页面,表格没有 submit,数据通过ajax。
  2. db.php- 与数据库一起工作,处理各种棘手的逻辑

在文件db.php中,在执行逻辑期间,应该初始化用户的消息,但不重新加载表单form.php。

怎么做?

如何初始化启动JSc alert?甚至更好bootstrap alert?如何将此JS值作为变量与消息文本一起传递?

以下是部分代码:

<?php
    session_start();
    header('Content-Type: application/json;charset=utf-8');

    require_once("db_connection.php");
    require_once("query_lib.php");

    echo 'TECT ХХХХХХХХХХХХХХХХХХХ';

    $docvalues = json_decode(stripslashes($_POST['formresult']), true);

    if(isset($docvalues['docclass'])){   // проверяем устанволен ли тип документа (для корректировки)
        $corr_doc_id = $docvalues['fixedItem']['property_fix2'];
        $current_doc_fixed_items = serch_corrected_docs ($corr_doc_id, $connection); // получаем последнюю действующую запись документа
        if ($current_doc_fixed_items == false) {      //если запрос по id документа не нашел документа (или использовался id нового документа, или не найден)
            $message = array('message' => 'ID документа не найден, попробуйте его изменить') ;
            echo json_encode($message);
            return $current_doc_fixed_items;
        }
javascript
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. Best Answer
    doox911
    2020-03-10T01:27:30Z2020-03-10T01:27:30Z
    1. 关于AJAX。根据您的问题和我读过的评论,我觉得您不太了解ajax. Ajax这只是对服务器的请求。简单来说,您只需访问该文件,例如db.php,从而使其在服务器上以与您访问它相同的方式执行,例如通过地址栏。你只要申请。根据传递的逻辑和数据,例如通过POST,您的脚本db.php可能会产生不同的结果。因此,如果在脚本执行期间有一个输出命令,例如echo,那么在响应中您将看到该命令将输出什么。
    2. 关于您的页面 ( html )。由于我看不到您的超级机密 html表单代码(登录、注册),因此我附上了一个小示例(引导程序):

    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    <form class="m-3">
      <div class="form-group">
        <label for="exampleInputEmail1">Email address</label>
        <input name="email" type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="Enter email">
        <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
      </div>
      <div class="form-group">
        <label for="exampleInputPassword1">Password</label>
        <input name="password" type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
      </div>
      <div class="btn btn-primary check-login">Submit</div>
    </form>

    1. 此外,为了将输入到表单字段中的数据传输到服务器,我们div使用一个类check-login(我们的按钮)挂起一个事件。单击按钮时,我们从字段中收集数据并将其发送到服务器。我将用于操作元素的算法、集合和后续操作form放在了你的肩上。发送文件请求db.php。您可以将所有内容添加到变量并以格式发送,json或者单独发送每个字段的值,例如,按字段名称。
    2. 关于文件db.php。可能,您的ajax请求将根据方法POST和格式实现(传递数据) json。如果是这样,那么您的数据可以这样提取:($_POST['auth-data']任意名称,您使用自己的名称)。如果您通过输入字段的名称发送数据,那么您可以像这样接受它们$_POST['email'], $_POST['password']:我将省略数据处理。接下来,您创建一个响应。在这里您需要决定要发送什么类型的数据?最好发送相同的json。例如$request = [],您形成一个数组,其中第一个元素存储一个包含成功/失败信息的字符串,第二个元素也是一个包含成功消息的数组,第三个元素包含有关失败(失败)的消息。以及您通过哪里输出数据echo,现在添加到数组中。在脚本结束时,将生成的数组转换json php 为函数并使用 command 输出echo。提款必须只有一次!正如@Mike所说,设置标题header('Content-Type: application/json;charset=utf-8');。
    3. 作为响应,您将收到一个表单字符串json。将其解码为数组。然后,通过分析(对元素进行排序),您可以了解如何向用户显示答案,以及是否应该显示。组件页面上有详细说明。

    祝你好运!

    • 2
  2. Sturmer
    2020-03-13T01:58:47Z2020-03-13T01:58:47Z

    所以我总结一下,因为我之前在网上找不到对我的问题的答案的明确解释。从文件执行JS被称为:ajaxphp

    $.ajax({
        type: "POST",
        url: "../php/db.php", // запускаем выполнение php-файла
        data: data_sent_to_php, // передаем в php-файл данные для обработки
        success: function(data){alert(data['message'])}; // выводим ответ php-файла которые он передает в п.2 
    });         
    

    为了php让文件将必要的数据发回给我们,您需要在其中插入以下代码:

    $message = array('message' => 'Ваше сообщение') ;    
    echo json_encode($message);
    
    • 0

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    根据浏览器窗口的大小调整背景图案的大小

    • 2 个回答
  • Marko Smith

    理解for循环的执行逻辑

    • 1 个回答
  • Marko Smith

    复制动态数组时出错(C++)

    • 1 个回答
  • Marko Smith

    Or and If,elif,else 构造[重复]

    • 1 个回答
  • Marko Smith

    如何构建支持 x64 的 APK

    • 1 个回答
  • Marko Smith

    如何使按钮的输入宽度?

    • 2 个回答
  • Marko Smith

    如何显示对象变量的名称?

    • 3 个回答
  • Marko Smith

    如何循环一个函数?

    • 1 个回答
  • Marko Smith

    LOWORD 宏有什么作用?

    • 2 个回答
  • Marko Smith

    从字符串的开头删除直到并包括一个字符

    • 2 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5