繁体   English   中英

对Slim Framework PHP函数的jQuery AJAX调用将参数传递为null

[英]jQuery AJAX call to Slim Framework PHP function pass parameter as null

我正在尝试使用苗条的框架,当我执行POST输入记录时,绝对没有任何作用。 恐怕我将标识为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脚本。

您可以使用类似:

data: {'my_banda_json': banda},

并尝试在服务器端对其进行解析,然后再尝试将其插入。

或者,您可以按照后端现在期望的方式发送所需的信息:

data: {'nombre': value_of_the_banda_name_field},

暂无
暂无

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

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