将AJAX与POST方法一起使用时发送的数据出了点问题

时间:2018-11-15 09:11:03

标签: jquery ajax post methods get

我正尝试在POST中使用AJAX。最初,该方法是GET,并且有效。但是,当我将方法更改为POST时,我发现接收服务器将数据接收为null。我可能是什么问题?代码很简单,当我将方法从“ GET”更改为“ POST”时,我也不明白为什么变得如此复杂。

            $.ajax({
                method:"POST",  //Originally GET
                url:"/administrator/change_member_id/",
                timeout:30000,  //30 seconds
                data:{
                    "m_as_id": storeID,
                    "m_id": pad_id("UMID", memberID)
                }
            })
            .done(function(responsedata) {
                var parsedJson = $.parseJSON(responsedata);

                if(parsedJson.result==1) {
                    $("#"+storeID+"_member_id_a").text(pad_id("UMID", memberID));
                    $("#"+storeID+"_member_id_b").text(pad_id("UMID", memberID));
                    alert("Success");
                } else {
                    alert(parsedJson.title+"\n"+parsedJson.description);
                }
            })
            .fail(function(xhr, status, errorThrown) {
                alert("Error communicating with server!");
                console.log("Status: "+status);
                console.log("Error: "+errorThrown);
            })
            .always(function() {
            });

2 个答案:

答案 0 :(得分:0)

事实证明,在使用Laravel框架的过程中,我没有将“ get”更改为“ post”。我有:

Route::get('/administrator/change_member_id', 'AdministratorController@changeMemberID')->middleware(CheckLogin::class);

它必须是:

Route::post('/administrator/change_member_id', 'AdministratorController@changeMemberID')->middleware(CheckLogin::class);

然后我偶然发现了另一个根本无法连接到服务器的问题。 事实证明,AJAX中的URL不够准确。我有:

url:"/administrator/change_member_id/"

但是它必须与(上面的)路线完全相同,而路线的尽头没有斜线:

url:"/administrator/change_member_id"

然后我试了一下,意识到如果无论路由中的URL到底有一个斜杠,AJAX中的URL都会导致连接错误。路由中的URL末尾可以带有斜线,也可以不带有斜线。因此,我不知道这是否是因为POST具有URL的技术性,例如GET如何使用查询字符串(在结尾处会有斜杠)而POST没有。也许是AJAX设计中的某种错误导致POST的灵活性不如GET?

编辑:由于我使用的是Laravel框架,因此我认为存在CSRF保护之类的东西,因此我必须添加以下任意一项:

data: {
    _token: "{{ csrf_token() }}"
},

或:

headers: {
    "X-CSRF-TOKEN": "{{ csrf_token() }}"
}

答案 1 :(得分:0)

enter code here

方式1:

        var name = 'data';
        var url='/url';
        data=[];
        data.push({'name':'_token','value':"{{ csrf_token() }}"});
        data.push({'name':'name','value':name});

        $.post(url,data,function (msg) {

           alert(msg)

        });

方式2:

            $.ajax({
            type:'POST',
            url:'/url',
            data:{_token: "{{ csrf_token() }}",name:name
            },
            success: function( msg ) {

                alert(msg)
            }

Route :: post('/ url','HomeController @ namefunction');

祝你好运

相关问题