簡體   English   中英

通過Ajax請求調用php函數

[英]Call a php function via Ajax Request

我試圖對我的主頁進行結構化編碼。 我必須處理很多mysql db查詢,並且我想為每個表創建一個自己的.php文件,其中包含我想通過Ajax Request調用的所有必要功能。

因此,我通過stackoverflow答案得到了以下代碼片段:

$.ajax({ url: '/my/site',
         data: {action: 'test'},
         type: 'post',
         success: function(output) {
                      alert(output);
                  }
});

在服務器端,應讀取action POST參數,並且相應的值應指向要調用的方法,例如:

if(isset($_POST['action']) && !empty($_POST['action'])) {
    $action = $_POST['action'];
    switch($action) {
        case 'test' : test();break;
        case 'blah' : blah();break;
        // ...etc...
    }
}

我的問題:

我也想通過data屬性分配表單數據,但我不知道該怎么做。 我嘗試了以下操作(這只是一個沒有用的猜測):

var data = $(this).serialize();
$.ajax({ url: '/my/site',
         data: {action: 'test', data},
         type: 'post',
         success: function(output) {
                      alert(output);
                  }
});

serialize()將以字符串形式從表單返回數據。 您可以僅將字符串的其余部分與其余查詢一起附加。

例:

<form id="form">
    <input name="form_name_1" value="form_value_1">
    <input name="form_name_2" value="form_value_2">
</form>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
    var data = $('#form').serialize();
    data += '&action=test';

    $.ajax({
        url: '/my/site',
        data:data,
        type:'post',
        success:function(output) {
            alert(output);
        }
    });
});
</script>

您需要將數據指定為參數

var data = $(this).serialize();
$.ajax({ url: '/my/site',
         data: {action: 'test', data: data},
         type: 'post',
         success: function(output) {
                      alert(output);
                  }
});

ajax調用的data參數需要一個對象,如ECMA / Javascript規范中所定義-例如,一系列鍵/值對

您可以通過$_POST['data']訪問它

就個人而言,我傾向於對其進行json序列化,以避免數組周圍出現HTTP怪癖...

data: {action: 'test', data: JSON.stringify(data)}

然后在PHP中:

$data = json_decode(isset($_POST['data']) ? $_POST['data'] : "{}");

如果發布了數據,則它現在將作為復雜對象出現在$data中,否則$data將包含一個空對象

您可以將數據發布為JSON對象

$.ajax({
    type: "POST",
    url: "/some/url",
    data: JSON.stringify(jsobject),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(output){
      alert(output);
    }
});

在php腳本中,您只需執行json_decode即可獲取對象或關聯數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM