将 json 传递给 php 并从 php 接收数据时出现问题


Problems with passing json to php and receiving data from php

我的问题是JQuery如何知道何时接收数据,当我观察浏览器的控制台时,我看到GET调用是第一个,然后是POST调用是第二个。它应该首先是 POST,然后是 GET。

我尝试使用 .ready 和一些 IF 语句等来解决我的问题,但我仍然没有实现我想要实现的目标。我应该使用一些事件吗?

我的贾夫文:

 (function($) {
   $(document).ready(function() {
     $("form#userdata").submit(function(){
       $.post( "savedata.php", $("form#userdata").serialize())
         .done(function( data ) {
           alert( "Send data" + data );
        });
       return false;
       alert("Error by passing data to php");
     });
 })})(jQuery);
 $.when($.ajax("savedata.php")).then(function(){
     $.get("savedata.php", function(data){
            alert("Php returns validation errors:+data);
     });
 });

我的 php 脚本:

 // Get POST data
 $postData = $_POST;
 // Print out for testing
 // print_r($postData);
 // Read data
 $fistname = $_POST['firstname'];
 $surname=$_POST['lastname'];
 $email=$_POST['email'];
 // VALIDATION

 // Build return array and return JSON
 $returnData = $postData;
 //print(json_encode($returnData));
 echo json_encode($returnData);
 ?>

$.get

页面加载时无条件调用,因为您没有将其放入事件处理程序中。

仅当您提交#userdata表单时,才会调用 $.post,因为它是从 .submit() 事件处理程序调用的。

你可以尝试这样的事情:

.PHP:

// Get POST data
 $postData = $_POST;
 // Print out for testing
 // print_r($postData);
 // Read data
 $fistname = $_POST['firstname'];
 $surname=$_POST['lastname'];
 $email=$_POST['email'];
 // VALIDATION
 if(//validationError){
    echo json_encode(array('error' => //Your error message here));
    exit();
 }
 $returnData = $postData;
 //print(json_encode($returnData));
 echo json_encode(array('success' => $returnData));
 ?>

然后。。。

.JS:

(function($) {
   $(document).ready(function() {
     $("form#userdata").submit(function(){
       $.post("savedata.php", $("form#userdata").serialize())
        .done(function( data ) {
           if(data.error)
              alert("Validation error: " + data.error);
           else
              alert( "Send data" + data.success );
        })
        .fail(function(){
           alert("Error by passing data to php");
        });
     });
 })})(jQuery);

你的脚本不正确

(function($) {
   $(document).ready(function() {
     $("form#userdata").submit(function(){
       $.post( "savedata.php", $("form#userdata").serialize())
         .done(function( data ) {
           alert( "Send data" + data );
        });
       return false;
       alert("Error by passing data to php");
     });
 })})(jQuery);
 $.when($.ajax("savedata.php")).then(function(){
     $.get("savedata.php", function(data){
            alert("Php returns validation errors:"+data); // You did not close the string literal and it would throw an error
     });
 });