Javascript 将json传递到php和从php接收数据时出现问题

Javascript 将json传递到php和从php接收数据时出现问题,javascript,php,jquery,json,Javascript,Php,Jquery,Json,我的问题是JQuery如何知道何时接收数据,当我观察浏览器控制台时,我看到GET调用是第一个,POST调用是第二个。 它应该先发布,然后获取 我试图用.ready和一些IF语句等来解决我的问题,但我仍然没有达到我想要达到的目标。我应该使用一些事件吗 我的剧本: (function($) { $(document).ready(function() { $("form#userdata").submit(function(){ $.post( "savedata.p

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

我试图用.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);
 ?>

你的脚本不正确

(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
     });
 });

你的脚本不正确

(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
     });
 });

您可以尝试以下方法:

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);

您可以尝试以下方法:

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);

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


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

$.get
是在加载页面时无条件调用的,因为您没有将其放入事件处理程序中



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

您是否尝试查看您的浏览器控制台?我一直在观看。.您没有因为缺少双引号而出现语法错误?如果您认为需要POST(发送数据)和另一GET(获取数据),那么您就错了。通过对脚本的一次POST或GET调用,一切都可以轻松实现。您可以直接返回(回显/打印)结果,并调用Alexandre Wiechers Vaz no!如果验证是好的,我只会把新的客户添加到mysql页面上,如果有验证错误,然后我返回0或1。我返回类似于tihs Array={1,0,1,0,1,1,1}的内容。所以,假设“1”表示输入数据是正确的,如果它是“0”,则表示用户没有填写该字段,如果字段不正确,则表示该值不正确(你不能冒充你的名字Alexandre45。我明白了吗?ž你有没有试着看你的浏览器控制台?我一直在看。你没有因为缺少双引号而得到语法错误?这只是复制到SO时的复制错误吗?如果你认为你需要POST(发送数据)和另一个get(获取数据),那你就错了。通过对脚本的一次POST或GET调用,可以轻松实现所有功能。您可以直接返回(echo/print)这个结果是Alexandre Wiechers Vaz no!如果验证没有问题,我只会把新客户添加到mysql的页面上,如果有验证错误,那么我会返回0或1。我返回类似tihs数组={1,0,1,0,1,1,1}。所以假设“1”表示输入数据没有问题,如果是“0”这意味着用户没有填写该字段,或者如果该字段不正确,则该值也没有填写(你不能说出你的名字Alexandre45。我明白了吗?ž请将最后一个警报的行与你的脚本进行比较,你会很容易看到他显示了它应该是什么样子:他在
验证错误之后添加了一个双引号:
请将该行与最后一个警报的行与你的脚本进行比较,你会很容易看到他显示了它应该是什么样子:他添加了一个双引号验证错误后的uote:Thx用于您的帖子!我使用您的帖子作为结构,但知道错误ba将数据传递到php,现在我该怎么办?看看您的控制台“网络”选项卡,查看ajax调用返回的错误是什么!它表示状态已取消、键入挂起、initator jq…js:8706脚本和其他不重要的数据。好的,如果它表示“通过解析数据出错”,则ajax调用中出现了错误。它可能会在控制台上抛出错误(一个4xO4 5xx。请参阅:).错误是什么?好的,帖子可以200,但我收到错误N\u ERROT\u NOT\u AVAILABLE:提示由用户nsPrompter.js:440终止(没有单击任何弹出窗口),还有一个syntaxerror使用/@表示源映射url pragmas是Cepreced user/#而不是.jquery.min.js:1Thx用于您的帖子!Oke我使用您的帖子作为结构,但知道说错误ba将数据传递给php,现在我该怎么办?看看您的控制台“网络”选项卡,查看ajax调用返回的错误是什么!它表示状态已取消、键入挂起、initator jq…js:8706脚本和其他不重要的数据。好的,如果它表示“通过解析数据出错”,则ajax调用中出现了错误。它可能会在控制台上抛出错误(一个4xO4 5xx。请参阅:)。错误是什么?好的,帖子很好200,但我得到错误N_ERROT_NOT_可用:提示由用户nsPrompter.js:440(未单击任何弹出窗口)保存,并且有语法错误,使用//@指示源地图url pragmas为Cepreced user/#。jquery.min.js:1