【问题标题】:Send JSON file from jQuery to PHP without AJAX无需 AJAX 将 JSON 文件从 jQuery 发送到 PHP
【发布时间】:2017-04-12 09:48:00
【问题描述】:

所以,我是 javascript/jquery 的新手,但我玩 PHP 的时间已经够久了。我知道如何使用 PHP 从输入中获取数据,这真的很简单,但是当尝试使用 jQuery 做同样的事情时,如何做到这一点让我很头疼。

现在我有这个脚本:

<script type="text/javascript">
    function onSubmit( form ){
        var data = JSON.stringify( $(form).serializeArray() );
        console.log( data );
    }
</script>

还有这个表格:

<form onsubmit='return onSubmit(this)'>
    <input type="date"/><br/>
    <input type="date"/><br/>
    <input type="submit" name=""/>
</form>

我看到它记录了 .json 文件就好了 ([{"name":"from","value":"1994-01-01"},{"name":"to","value":"1994-02-02"}]) 。我的猜测是将 .json 发送到 .php 文件,然后执行 $_POST,但我不知道如何从这里开始或执行此操作。我不知道是否需要 ajax,如果不需要,没有它怎么办(我在这里找到的所有东西都在使用 ajax)。

【问题讨论】:

  • 你能解决这个问题吗?
  • @julekgwa 是的。解决方案在var results = JSON.parse(data); 中,然后在循环中使用results[i].probeTemp。我只是执行得很糟糕。
  • @julekgwa 哦,还有$postVars = $request-&gt;getParsedBody();$var = $request-&gt;getAttribute('var');

标签: javascript php jquery json


【解决方案1】:

您可以将表单数据作为标准 URL 编码表示法的文本字符串发送,也可以作为 JSON 发送,例如带有 jQuery.serialize() 的字符串。

<form id="set-date-form">
    <input name="from" type="date"/><br/>
    <input name="to" type="date"/><br/>
    <input type="submit" id="set-date"/>
</form>

jQuery

<script>
   $('#set-date').on('click', function (e) {
       e.preventDefault();
       var data = $('#set-date-form').serialize();
       $.post('somephpfile.php', data, function (response) {
           // response is the data echoed from php
           var result = JSON.parse(response) // assuming that php echoed ['success' => true/false];
           if (result.success == true) {
               alert("the values were sent to db successfully");
           }else {
               alert("the values were not sent to db successfully");
           }
       })
   })
</script>

然后在您的PHP 文件中

<?php

$from = $_POST['from'];
$to = $_POST['to'];

// here you can update the database with this values
// after updating db or insert
// check if the query was successful
// if query was successful [echo json_encode(['success' => true]);] this value will be sent to javascript as a response
// if query was not successful [echo json_encode(['success' => false]);] this value will be sent to javascript as a response

【讨论】:

    【解决方案2】:

    PHP 被视为服务器端。

    如果您想将数据发送到“PHP”,您需要请求服务器(如果您不想更改当前页面,则通过 Ajax 或使用数据调用新 URL)。

    我知道如何使用 PHP 从输入中获取数据

    这是一个非常错误的说法,因为 PHP 无法从输入中获取数据,因为它是服务器端。 浏览器向调用服务器的 PHP 发送数据。

    【讨论】:

    • 嗯...我正在考虑在“提交” .json 文件后在 php 文件中运行一个函数,因此页面不会重定向我。没有考虑到这一点。我想我毕竟必须进入 ajax :/
    【解决方案3】:

    相反,定义一个路由来将您的输入数据发布到您的 php 文件中,然后通过表单您可以简单地使用 method='POST' 而不是使用 ajax 来发送您的数据。

    【讨论】:

    • 我使用 Express.JS 来定义发布数据的路由,但我假设您的 php 文件中有路由并连接到数据库,所以我的假设是,如果您有连接在您的后端,数据将通过该方法发布。
    【解决方案4】:

    您也可以使用 XML HTTP 请求。

    这是一个例子。

    var http = new XMLHttpRequest();
    var url = "get_data.php";
    var params = "lorem=ipsum&name=binny";
    http.open("POST", url, true);
    
    //Send the proper header information along with the request
    http.setRequestHeader("Content-type ", "application/x-www-form-urlencoded");
    
    http.onreadystatechange = function() {//Call a function when the state changes.
        if(http.readyState == 4 && http.status == 200) {
            alert(http.responseText);
        }
    }
    http.send(params);
    

    这取自这里的答案。

    Send POST data using XMLHttpRequest

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 2021-11-10
      • 1970-01-01
      • 2015-04-24
      相关资源
      最近更新 更多