PHP没有从Ajax Jquery捕获数据

时间:2017-09-19 00:12:45

标签: javascript php jquery ajax

我试图在服务器端使用Ajax和PHP传递数据。 php文件没有捕获通过Ajax发送的数据。

代码使用jquery获取值并创建一个名为data

的长字符串

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没有获得任何数据?谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

看起来您正在尝试将字符串作为对象属性传递。更改$.ajax选项:

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

答案 1 :(得分: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({
    type: "POST",
    url: 'crear_oferta.php',
    data: data,
    success: function(response) {
        alert(response);
    }
});