繁体   English   中英

Ajax 对 php 的请求,POST 数据为空

[英]Ajax request to php with empty POST data

我是 javascript 的新手,我对 ajax POST 到 php 有问题。

我正在尝试通过 ajax POST 将 javascript 变量发送到 php 但它不起作用。

ajax 帖子已发送,但它发送空 POST。 尝试将数据保存到 bdd 时,我收到警报“发生错误。202”。

提前感谢您帮助我。

这是我的 javascript 和 php 代码:

<script type="text/javascript">
function save_marker(mId, vId)
    {
        //Save new marker using jQuery Ajax
        var myData = { 'markerId' : mId, 'vendorId' : vId }; //post variables   
        console.log(myData);
        jQuery.ajax({
          type: "POST",
          url: "https://marchad.fr/wp-content/plugins/wc-multivendor-marketplace/includes/map_process.php",
          data: myData,
          cache: false,
          dataType: "json",
          contentType : "application/json; charset=utf-8",
          success: function(dataResult){
                    var stringified = JSON.stringify(dataResult);
                    var dataResult = JSON.parse(stringified);
                    if(dataResult.statusCode==200){
                        alert("ok"+dataResult);                 
                    }
                    else if(dataResult.statusCode==201){
                       alert("Error occured !");
                    } else if(dataResult.statusCode==202){
                       alert("Error occured ! 202");
                    }  else if(dataResult.statusCode==203){
                       alert("Error occured ! 203");
                    }
                    
          },
          error:function (xhr, ajaxOptions, thrownError){
              alert('Ooops, something happened: ' + ajaxOptions + ' ' +thrownError);
          }
        });
    }
</script>

<?php
global $WCFM, $WCFMmp, $wpdb;
$mId    = filter_var($_POST["markerId"], FILTER_SANITIZE_STRING);
$vId    = filter_var($_POST["vendorId"], FILTER_SANITIZE_STRING);

################ Save & delete markers #################
if( isset($mId) && isset($vId) ) //run only if there's a post data
{
    if( !empty($mId) && !empty($vId) ){
        //make sure request is comming from Ajax
        $xhr = $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'; 
        if (!$xhr){ 
            header('HTTP/1.1 500 Error: Request must come from Ajax!'); 
            exit(); 
        }



        $results = $wpdb->query("INSERT INTO markers_users (id, mark_id, user_id, user_actif) VALUES ('', $mId , $vId , 'oui')");
        if (!$results) {  
              echo json_encode(array("statusCode"=>201));
        } else {
            echo json_encode(array("statusCode"=>200));
        }
    } else {
        echo json_encode(array("statusCode"=>202));
    }

} else {
        echo json_encode(array("statusCode"=>203));
}
?>

你的问题在这里:

var myData = { 'markerId': mId, 'vendorId': vId };

字段名称不需要用引号引起来

将其更改为此并重试:

var myData = { markerId: mId, vendorId: vId };

试试这个数据:JSON.stringfy(myData)

好的,所以解决方案是:

<script type="text/javascript">
function save_marker(mId, vId)
    {
        //Save new marker using jQuery Ajax
        var myData = { markerId : mId, vendorId : vId }; //post variables   
        console.log(myData);
        jQuery.ajax({
          type: "POST",
          url: "https://marchad.fr/wp-content/plugins/wc-multivendor-marketplace/includes/map_process.php?markerId="+ mId +"&vendorId="+ vId,
          data: myData,
          cache: false,
          dataType: "json",
          contentType : "application/json; charset=utf-8",
          success: function(dataResult){
                    var stringified = JSON.stringify(dataResult);
                    var dataResult = JSON.parse(stringified);
                    if(dataResult.statusCode==200){
                        alert("ok"+dataResult);                 
                    }
                    else if(dataResult.statusCode==201){
                       alert("Error occured !"+dataResult.statusCode+dataResult.mId+dataResult.vId+dataResult.rawData+dataResult.rawDataMid+dataResult.rawDataVid+dataResult.datamId+dataResult.datavId);
                    } else if(dataResult.statusCode==202){
                       alert("Error occured ! 202"+dataResult.statusCode+dataResult.mId+dataResult.vId+dataResult.rawData+dataResult.rawDataMid+dataResult.rawDataVid);
                    }  else if(dataResult.statusCode==203){
                       alert("Error occured ! 203"+dataResult.statusCode+dataResult.mId+dataResult.vId+dataResult.rawData+dataResult.rawDataMid+dataResult.rawDataVid);
                    }
                    
          },
          error:function (xhr, ajaxOptions, thrownError){
              alert('Ooops, something happened: ' + ajaxOptions + ' ' +thrownError);
          }
        });
    }
</script>

<?php
//mysqli
$mysqli = new mysqli($db_host, $db_username, $db_password, $db_name);

if (mysqli_connect_errno()) 
{
     die('Erreur de connexion : ' . $mysqli->connect_errno);
}

$rawData = file_get_contents("php://input");

$data = array();
parse_str($rawData, $data);

$mId    = $data['markerId'];
$vId    = $data['vendorId'];


################ Save & delete markers #################
if( isset($mId) && isset($vId) ) //run only if there's a post data
{

    if( !empty($mId) && !empty($vId) ) //run only if there's a post data
    {

        $results = $mysqli->query("INSERT INTO markers_users (id, mark_id, user_id, user_actif) VALUES ('', $mId , $vId , 'oui')");
        if (!$results) { 
            echo json_encode(array("statusCode"=>201, "mId"=>$mId, "vId"=>$vId, 'rawData' => $rawData, 'rawDataMid' => $rawData["markerId"], 'rawDataVid' => $rawData["vendorId"], "datamId"=> $data['markerId'], "datavId"=> $data['vendorId']));
        } else {
            echo json_encode(array("statusCode"=>200));
        }
    } else {
        echo json_encode(array("statusCode"=>202));
    }

} else {
        echo json_encode(array("statusCode"=>203));
}

?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM