2016-10-17 11 views
1

これは重複しているかもしれませんが、なぜmoコードが機能しないのか理解できません。私はAjax/phpを使って複数の結果を得ようとしています。Ajax投稿からマルチプル結果を取得する

これは私のPHPファイルから次のとおりです。

$result11 = 'test1' 
$result22 = 'test2'; 

echo json_encode(array("data1" => $result11, "data2" => $result22)); 

Ajax呼び出し:

$(document.body).on('submit','#sendmessage',function() { 

    $.ajax({ 
     type: "POST", 
     url: "/send.php", 
     data: {par:par,kid:kid,ha:ha,sform:sform,editors:editors}, 
     cache: false, 
     dataType:'json', 
     success: function(datax) { 
      alert(datax.data1); 
     } 

    }); 
    return false; 
}); 

問題:私はフォームを送信すると

、ページがAJAX要求を送信するのではなく、リフレッシュし。この作品が、私はPHPファイルから複数の結果を得ることができません。同時に

$(document.body).on('submit','#sendmessagex',function() { 

    var str = $(this).serialize(); 
    $.ajax({ 
     type: "POST", 
     url: "/send.php", 
     data:str,  
     success: function(data) { 
      alert(data); 
     } 

    }); 
    return false; 
}); 

答えて

0

スクリプトへのpreventDefault()呼び出し

$(document.body).on('submit','#sendmessagex',function(event) { 
//----------------------------------------------------^^^^^ 
    event.preventDefault(); 
    var str = $(this).serialize(); 
    $.ajax({ 
      type: "POST", 
      url: "/send.php", 
      data:str,  
      success: function(data) { 
       alert(data); 
      } 

    }); 
    return false; 
}); 
+0

このコードはpreventDefaultなしで動作します。 dataTypeで最初の例を実行しません: 'json'、 – tabaiba

+0

関数呼び出しにパラメータ 'event'を追加しましたか?それなしではうまくいかない – RiggsFolly

0

あなたがでpreventDefaultを使用する必要がありますを追加します。ページのリフレッシュを防止するためのコースです。その後、データ型jsonなしで2番目のコードを使用することができます。しかし、その場合には最初にあなたは、この方法のようなJSONを解析する必要があります。

success: function(data){ 
var datax = JSON.parse(data); 
//now you have object and can access like this: datax.data1, datax.data2 
} 

あなたが最初のコードを使用したい包み、PHPであなたが適切なJSON出力としてそれを定義するためにPHPのヘッダを設定する必要があります。

header('Content-Type: application/json'); 
関連する問題