簡體   English   中英

將帶有jquery ajax的JSON傳遞給PHP中的變量

[英]Pass JSON with jquery ajax to a variable in PHP

該腳本無法在PHP上的變量中傳遞數據。

script.js

$(document).on('click', '.variant_model', function(){
    var model_id = this.id;
    $.ajax({
        type: "POST",
        url: "http://www.mod-fusion.fr/console",
        //dataType: 'json',
        data: {"model_id":model_id},
        success: function(){
            $('#result').html(model_id); // work fine
        }
    });
});

script.php

echo '<li>
    <a href="#" id="'.$v['modelId'].'" class="variant_model">
        <span class="'.$v['brand_name'].'_text">'.$v['model_name'].'</span</a>
    </li>';

$return = $_POST;
if(isset($return)){
    $return["model_id"] = json_encode($return);
    echo json_encode($return); // doesn't work, it return {"model_id":"[]"}
}
echo'<div id="result"></div>'; // work fine

感謝與我一起尋找解決方案。

您有一個雙重json_encode,在發送json之后,您什么都不寫,請嘗試以下操作:

$return = $_POST; 
if(isset($return)) {    
    $return["model_id"] = $return;
    echo json_encode($return);
    exit;
}

嘗試這個:

if(isset($_POST["model_id"])
{
   $json = json_decode($_POST["model_id"]);
   echo json_encode($json);
}

確保json值的鍵在“”之間。

有幾件事對我很突出。

$(document).on('click', '.variant_model', function(){

應該

$('.variant_model').on('click', function(){

您不想跟蹤文檔上的單擊事件,這是一種不好的做法。 https://javascript.info/bubbling-and-capturing

檢查並查看var model_id = this.id; 返回一個值。 您可以使用console.log(model_id);

您也沒有在PHP代碼中傳遞任何值。 它應該是:

$return = $_POST;
if(isset($return['model_id']))
{
   //$return["model_id"] = json_encode($return);
   echo json_encode($return['model_id']); // doesn't work, it return {"model_id":"[]"}
}
echo'<div id="result"></div>'; // work fine

編輯; 也忘記添加此內容:

$.ajax({
        type: "POST",
        url: "http://www.mod-fusion.fr/console",
        //dataType: 'json',
        data: {"model_id":model_id},
        success: function(data){
            $('#result').html(data); // work fine
        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM