在没有AJAX的情况下将JSON文件从jQuery发送到PHP

时间:2017-04-12 09:48:01

标签: javascript php jquery json

所以,我是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)。

4 个答案:

答案 0 :(得分:2)

您可以使用标准网址编码表示法将表单数据作为文本字符串发送,也可以使用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

答案 1 :(得分:0)

PHP被视为服务器端。

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

  

我知道如何使用PHP

从输入中获取数据

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

答案 2 :(得分:0)

相反,定义一条路线将您的输入数据发布到您的php文件中,然后通过表单您可以简单地方法=&#39; POST&#39;而不是使用ajax发送您的数据。

答案 3 :(得分:0)

您也可以使用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