繁体   English   中英

用php在Ajax中发布json数据

[英]post json data with ajax in php

当我单击删除按钮ConfirmDelete函数调用时,它将参数发布为json,如下所示。 它从服务器页面返回并输入成功方法,但没有任何值..不能为空,只是空白字符串:“”我无法弄清楚我发布的问题是什么,并且可以在同一页面的表单内获取数据,但是可以正常工作,但这不是' t ..我想念什么?

confirmDelete = function()
{
    var data = {
        "action": "DeleteLocalObject",
        "objectName":intenttoDeleteobjectTitle
    };
    $.ajax({
        url:"../../Controller/ObjectController.php5",
        type:"POST",
        //contentType: "application/json",
        data: data,
        success: function(data) {
            debugger
            if(data.Passed)
            {               
                setTimeout(function () {
                    location.reload(true);
                }, 1500);
            }
            else
            {

            }
        },
        error:function(a, b, c){

        }
    });
}

和这里的响应页面:(我没有实现删除,但只是想检查请求是否可以)

if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
    if (isset($_POST["action"]) && !empty($_POST["action"])) { //Checks if action value exists
        $action = $_POST["action"];

        switch($action)
        { //Switch case for value of action
            case "CreateLocalObject":
                $controllerObject->createNewLocalObject($_POST["objectname_new"],$_POST["objectcomment_new"],$_POST["type_new"],$_POST["ipaddress_new"]);
                break;
            case "DeleteLocalsObject":
                $result =$_POST["objectName"];//this must get value
                echo json_encode($result);//and this must print data to success method
                break;
        }

我假设它将返回我发布的相同对象名称。

您不是向服务器发送密钥-值对,而是发送字符串:

data: JSON.stringify(data),

因此,您不能使用$_POST全局$_POST来访问它; 您的变量将为空,因此您的结果为空。

您应该将数据作为键值对的对象发送:

data: data,

为了让jQuery自动分析返回的数据,您应该添加一个数据类型:

dataType: 'json',
data: data,

暂无
暂无

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

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