【问题标题】:How to pass JSON object to PHP file called through the modal window如何将 JSON 对象传递给通过模式窗口调用的 PHP 文件
【发布时间】:2013-08-31 20:48:35
【问题描述】:

我有以下 javascript 可以创建 json 对象并且工作正常,但我想将此对象传递给从模式窗口调用的 php 文件,以便下一个进程。

<script type="text/javascript">
$(document).ready(function(){
    $('a.edit').click(function(){
    var myrowID = $(this).data('rowid');
    var sfid = $(this).data('sfid');
    var company = $(this).data('company');
    var dealerclass = $(this).data('dealerclass');    
    $(".modal-body #mysfid").val(sfid);
    $(".modal-body #mycompany").val(company);
    $(".modal-body #mydealerclass").val(dealerclass);
    var myObject = {};
    myObject.sfid = sfid;
    myObject.company=company;
    var myString = JSON.stringify(myObject);
    var obj = jQuery.parseJSON(myString);
    $(".modal-body #myjobject").val(obj.sfid);

    });
});

从这里我不知道如何将它传递给 php 文件。我可以在其中使用 json_decode 函数来获取要处理的所需数据。 如果这种方式不正确,请建议任何其他替代方式来实现这一点。 请帮帮我。 感谢您的帮助。

这是来自引导 HTML 中模态的调用

<a class="btn btn-success" href="../BootLogin/Sales/updateprocess.php">Approved</a>

updateprocess.php 文件中的最新更新,但仍然没有显示。

$_POST['obj'];

echo 'var 转储'; var_dump($_POST);

    $jsondata=$_POST['obj']; //sets all data curiously to null, bug ?

    $data = json_decode($_POST['obj']);

    echo 'decoded data';
    print_r($data);

    echo 'END';
    exit();  

这里是发布 JSON 的 jquery 脚本

<script type="text/javascript">
$(document).ready(function(){
    $('a.edit').click(function(){
    var myrowID = $(this).data('rowid');
    var sfid = $(this).data('sfid');
    var company = $(this).data('company');
    var dealerclass = $(this).data('dealerclass');    
    $(".modal-body #mysfid").val(sfid);
    $(".modal-body #mycompany").val(company);
    $(".modal-body #mydealerclass").val(dealerclass);
    var myObject = {};
    myObject.sfid = sfid;
    myObject.company=company;
    var myString = JSON.stringify(myObject);
    var obj = jQuery.parseJSON(myString);
    $(".modal-body #myjobject").val(obj.sfid);
    $.post("updateprocess.php");
    });
});

我也测试过文件的路径,但仍然是 (0)

我的 updateprocess.php 现在有以下代码

$_POST['obj'];

回声 $_POST['obj'];

echo 'var dump';

    var_dump($_POST);

    //$jsondata=$_POST['obj']; //sets all data curiously to null, bug ?

    //$data = json_decode($_POST['obj']);
    //var_dump($data);
    echo 'decoded data';
   // print_r($data);

    echo 'END';
    exit();  

这是输出。

var dumparray(0) { } 解码数据END

我已按照建议进行了更新,但显示仍为 (0)

<script type="text/javascript">
$(document).ready(function(){
    $('a.edit').click(function(){
    var myrowID = $(this).data('rowid');
    var sfid = $(this).data('sfid');
    var company = $(this).data('company');
    var dealerclass = $(this).data('dealerclass');    
    $(".modal-body #mysfid").val(sfid);
    $(".modal-body #mycompany").val(company);
    $(".modal-body #mydealerclass").val(dealerclass);
    var myObject = {};
    myObject.sfid = sfid;
    myObject.company=company;
    var myString = JSON.stringify(myObject);
    var obj = jQuery.parseJSON(myString);
    $(".modal-body #myjobject").val(obj.sfid);
    }); 
});     
    var dataString = 'obj=' +obj
$.ajax({  
    type: 'POST',  
    url: 'updateprocess.php',  
    data: dataString,  
    success: function() {  
    console.log('POST successful.');
    }  
});

</script> 

Updated Javascript Ajax code.

<script type="text/javascript">
var passSFID;
$(document).ready(function(){
    $('a.edit').click(function(){
    var myrowID = $(this).data('rowid');
    var sfid = $(this).data('sfid');
    var company = $(this).data('company');
    var dealerclass = $(this).data('dealerclass');    
    $(".modal-body #mysfid").val(sfid);
    $(".modal-body #mycompany").val(company);
    $(".modal-body #mydealerclass").val(dealerclass);
passSFID = sfid;
    $('a.approve').click(function(){
        var postData = passSFID;
        alert(postData);       // Data prints at this point as required
$.ajax({
    type: "POST",
    datatype: "json",
    data: {mydata:postData},
    url: "backend.php",

    success: function(data){
        console.log('Data Passed');

    },
    error: function(e){
        console.log("Data passed failed");
    }

});

    });
});
});
</script>

【问题讨论】:

  • var myString = JSON.stringify(myObject); var obj = jQuery.parseJSON(myString); 嗯,你到底想做什么?
  • 可能试图克隆对象?为什么?我不知道
  • 感谢您抽出宝贵时间来解决我的问题。我只想将 json 对象传递给我的 php 文件以供其他进程使用。我没有在我的 updateprocess.php 文件中的 var_dump(_POST['obj'] 中获得任何数据。它显示 var_dump(0)。任何建议

标签: php javascript jquery


【解决方案1】:

您可以使用 $.post() 将 json 发布到您的 PHP 文件并让它解析 $_POST 数据:

http://api.jquery.com/jQuery.post/

您看起来发帖不正确。试试这个,它会登录到控制台告诉你你已经正确发布了。我假设您的 obj 变量是您要发布的名称为“obj”的变量?

var dataString = 'obj=' +obj

$.ajax({  
  type: 'POST',  
  url: 'updateprocess.php',  
  data: dataString,  
  success: function() {  
    console.log('POST successful.');
  }  
});

现在updateprocess.php 应该可以得到$_POST['obj'] 变量了。

【讨论】:

  • 感谢您的回复。我正在使用以下内容查看输出,但它没有显示任何内容。你能告诉我哪里错了吗? $jsondata = $_POST['obj']; $jsondata = stripslashes($jsondata); $data = json_decode($jsondata,true); print_r($data);
  • 如果您echo $_POST['obj'] 会发生什么?您确定要使用名称“obj”发布您的 JSON 吗?请编辑您的问题以包含发布到您的 PHP 文件的 jQuery 代码。
  • 我添加了 jquery 和 php 代码以及输出供您查看。感谢您的帮助。
  • 感谢您的更新。我添加了它,但仍然没有显示值。如果您能指出错误,我已经发布了我的完整脚本。谢谢
  • 尝试调试一下,Azam。将console.log(dataString) 放在$.ajax 调用之前,以确保您确实在发送数据。
【解决方案2】:

您可以使用post 处理 json 并返回您需要的内容

【讨论】:

  • 感谢您的回复,但我没有得到任何显示。 var_dump(_POST) 显示 (0) 值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-21
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-07
相关资源
最近更新 更多