【问题标题】:jQuery AJAX call to Slim Framework PHP function pass parameter as nulljQuery AJAX 调用 Slim 框架 PHP 函数将参数传递为 null
【发布时间】:2014-12-30 10:04:08
【问题描述】:

我正在尝试使用苗条的框架,当我执行 POST 以输入记录时,完全没有任何作用。恐怕我传递了标识为 null 的参数,因为如果我在数据库中允许它,请输入一个 null 记录。
这是 mi Slim PHP。

$app-> post("/banda/", function() use($app){
            $nombre=$app->request->post("nombre");
            try{
                $connection = getConnection();
                $dbh = $connection->prepare("INSERT INTO banda VALUES(null, ?)");
                $dbh->bindParam(1, $nombre);
                $dbh->execute();
                $banda = $connection->lastInsertId();
                $connection= null;

                $app->response->headers->set("Content-type","application/json");
                $app->response->status(200);
                $app->response->body(json_encode($banda));
            }catch(PDOException $e){
                echo "Error: " . $e->getMessage();
            }
        });

这是我的 JS

var API_URI = "http://localhost/banda/";

    function limpiar() {
        $("#form-band input:first-child").val("");
    }
    function nombreBandaEsVacia() {
        return ($("#form-band input:first-child").val().length == 0);
    }
    function getBandaJSON() {
        return JSON.stringify({
            nombre: getBandaNombre()
        });
    }
    function getBandaNombre() {
        return $("#form-band input:first-child").val();
    }
$("#form-band input:last-child").on("click", function createBanda() {
        if (nombreBandaEsVacia()){
            alert("Oops! Completa el formulario!");
        }else{
            // 1.2 JSON.Stringify
            var banda = getBandaJSON();
        };
        $.ajax({
            type:'POST',
            crossDomain: true,
            url:API_URI,
            data:banda,
            dataType:"json",
            beforeSend: function() {
                console.log(banda);
            },          
            success:function(response, banda) {
                limpiar();
            },    
            error:function(jqXHR, data, textStatus, errorThrown) {
                console.log(data);
                console.log(errorThrown);
                console.log(jqXHR);
                console.log(textStatus);
            }
        });
    });

我的导航员这样说:

http://s2.subirimagenes.com/imagen/previo/thump_91447311.png

【问题讨论】:

    标签: php jquery ajax frameworks slim


    【解决方案1】:

    从外观上看,您正在向您的 php 脚本发送一个字符串,而不是键值对。

    你可以使用类似的东西:

    data: {'my_banda_json': banda},
    

    并在尝试插入之前在服务器端解析它。

    或者您可以以后端现在期望的方式发送您需要的内容:

    data: {'nombre': value_of_the_banda_name_field},
    

    【讨论】:

    • @JaviStinson 不要stringify 它,只需返回对象,以便您发送键值对而不是字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 2015-12-14
    相关资源
    最近更新 更多