2017-09-19 13 views
0

サーバー側でAjaxとPHPを使用してデータを渡そうとしています。 PHPファイルはAjax経由で送信されたデータをキャッチしていません。PHPがAjax Jqueryからデータをキャッチしない

コードはjQueryを使って値を取得し、呼ばれる長い文字列を作るデータ

jqueryのコードは次のようになります。

var data = 'ppemail=' + $('#email').val() 
    + '&monto_enviar=' + montoEnviarDisp 
    + '&monto_pub=' + montoPubDisp 
    + '&tasa=' + tasaDisp 
    + '&monto_recibir=' + monto_recibirDisp 
    + '&banco=' + $('#banco').val() 
    + '&receptor=' + $('#receptor').val() 
    + '&cuenta=' + $('#cuenta').val() 
    + '&cedula=' + $('#cedula').val(); 

$.ajax({ 
    type: "POST", 
    url: 'crear_oferta.php', 
    data: ({data}), 
    success: function (response) { 
     alert(response); 
    } 
}); 

PHPファイルはこれです:

<?php 
session_start(); 
require_once 'dbconfig3.php'; 

var_dump($_POST); 

try { 
    $userID = $_SESSION['userSession']; 

    $ppemail = $_POST['ppemail']; 
    $monto_e = $_POST['monto_enviar']; 
    $monto_p = $_POST['monto_pub']; 
    $tasa = $_POST['tasa']; 
    $monto_rec = $_POST['monto_recibir']; 

    $banco = ($_POST['banco']); 
    $receptor = ($_POST['receptor']); 
    $cuenta = ($_POST['cuenta']); 
    $cedula = ($_POST['cedula']); 

    /// luego de confirmar hacer el try e insertar 

    //if(isset($_POST['btnferta'])){ 

    //$password = md5($upass); 
    $bid_date = date('Y-m-d H:i:s'); 

    $stmt = $db_con->prepare("INSERT INTO ofertas(uid,email_pp,nombre_receptor,banco_receptor,cuenta_receptor,cedula_receptor,monto_enviar,monto_publicar,tasa,monto_recibir,fecha) 
          VALUES(:userid, :emailpp, :nombre, :banco, :cuenta, :cedula, :monto_e, :monto_p, :tasa, :monto_r, :fecha)"); 

    $stmt->bindParam(":userid", $userID); 
    $stmt->bindParam(":emailpp", $ppemail); 
    $stmt->bindParam(":nombre", $receptor); 
    $stmt->bindParam(":banco", $banco); 
    $stmt->bindParam(":cuenta", $cuenta); 
    $stmt->bindParam(":cedula", $cedula); 
    $stmt->bindParam(":monto_e", $monto_e); 
    $stmt->bindParam(":monto_p", $monto_p); 
    $stmt->bindParam(":tasa", $tasa); 
    $stmt->bindParam(":monto_r", $monto_rec); 
    $stmt->bindParam(":fecha", $bid_date); 

    $stmt->execute(); 

    echo 'ok'; 


} catch (PDOException $ex) { 
    echo $ex->getMessage(); 
} 

?> 

理由$ _POSTはデータを取得していませんか?助けてくれてありがとう!

答えて

1

あなたがオブジェクトにdataを設定する必要があります。これにより、URLパラメータが正しくエンコードされるようになります。それ以外の場合は、特殊文字を含む可能性のあるパラメータにはencodeURIComponentを呼び出す必要があります。

var data = { 
    'ppemail': $('#email').val(), 
    'monto_enviar': montoEnviarDisp, 
    'monto_pub': montoPubDisp, 
    'tasa': tasaDisp, 
    'monto_recibir': monto_recibirDisp, 
    'banco': $('#banco').val(), 
    'receptor': $('#receptor').val(), 
    'cuenta': $('#cuenta').val(), 
    'cedula': $('#cedula').val() 
}; 

$.ajaxを呼び出すときに、あなたが別のオブジェクトでそれをラップしてはならない:真、 `` $ .ajax`機能で:

$.ajax({ 
    type: "POST", 
    url: 'crear_oferta.php', 
    data: data, 
    success: function(response) { 
     alert(response); 
    } 
}); 
1

文字列をオブジェクトプロパティとして渡そうとしているようです。あなたの$.ajaxオプションを変更します。

$.ajax({ 
    type: "POST", 
    url: 'crear_oferta.php', 
    data: data, 
    success: function(response) { 
    alert(response); 
    } 
}); 
+0

キャッシュの場合は、パラメータ 'キャッシュを使用することができるかもしれません。 (Y) – Harish

+0

@Harish POSTは決してキャッシュされません – Barmar

+0

@Barmar、はい、あなたは正しい人です:) – Harish

関連する問題