Получить данные AJAX POST на php с помощью вызова Javascript

Сначала я уверен, что я Новичок до php, Я использую jquery (knockout js) на стороне клиента и PHP на стороне сервера. мой код.

Клиентская сторона. Я использую knockout js(Javascript). для вызова моей службы PHP.

Мой код:

self.VMSaveEditUserMode = function () {
   try {
      var params = { "ClientData": [controllerVM_.ClientID(), controllerVM_.VMList[0].ClientName(), controllerVM_.VMList[0].ShortName(), controllerVM_.VMList[0].Address(), controllerVM_.VMList[0].CreatedBy(), controllerVM_.VMList[0].CityName(), controllerVM_.VMList[0].PostalCode(), controllerVM_.VMList[0].ContactEmail(), controllerVM_.VMList[0].ContactPhone(), controllerVM_.VMList[0].IsCorporate()] };

      $.ajax({
         type: "POST",
         url: URL + "index.php/phpService/SaveClient/" + controllerVM_.TokenKey(),
         data: JSON.stringify(ko.toJS(params)),
         contentType: "application/json",
         async: true,
         dataType: 'json',
         cache: false,
         success: function (response) {
         },
         error: function (ErrorResponse) {
            if (ErrorResponse.statusText == "OK") {
            }
            else {
               alert("ErrorMsg:" + ErrorResponse.statusText);
            }
         }
      });
   }
   catch (error) {
      alert("Catch:" + error);
   }
}

На стороне сервера Мой код. Я использую этот PHP код для подключения к DB.

Код PHP:

public function SaveClient($userToken)
    {   
       $value = json_decode($Clientdata);
       echo $value->ClientData[0];
    }

* Мой вопрос *:

  • Я не понимаю, как данные POST на PHP? Я попробовал метод $_POST[''], а также многие другие.
  • Я использую eclipse как php framework. так что не удалось отладить его, когда я отправляю данные. Нормальный режим я могу отлаживать свой код. Но не из удаленного. Для этого я сделал изменения и в файле php.ini.

Как получить ответ на сообщение о php-коде?

Как отлаживать удаленное сообщение?

Пример моего запроса:

Предположим, я использую:

Для < <26 > только в то время мой формат запроса.

ClientData%5B%5D=4&ClientData%5B%5D=kamlesh&ClientData%5B%5D=KAM&ClientData%5B%5D=Junagadh&ClientData%5B%5D=me&ClientData%5B%5D=SANTA+ROSA&ClientData%5B%5D=76220&ClientData%5B%5D=kamlesh.vadiyatar%40gmail.com&ClientData%5B%5D=9998305904&ClientData%5B%5D=false

Для data: JSON.stringify(ko.toJS(params)),

{"ClientData":["4","kamlesh","KAM","Junagadh","me","SANTA ROSA","76220","[email protected]","9998305904",false]}

Ответ 1

Если я правильно понял, вам нужно создать службу PHP, которая сможет получать запросы от REST-запросов от клиента.

Чтобы сделать так, вам нужно получить доступ к необработанным данным POST. В PHP это делается следующим образом:

$ClientData = file_get_contents('php://input');

Подробнее о php://input в документации об упаковках.

Разумеется, со стороны клиента данные должны отправляться с использованием метода POST и как необработанные данные, то есть в виде строки. Вы можете получить строку из объекта, используя JSON.stringify(), который вы уже делаете.

Если вы передадите объект, он будет преобразован в строку внутри jQuery, используя формат строки запроса. Подробнее об этом в документации jQuery для $.ajax (наиболее важными параметрами являются data и processData).

Ответ 2

Просто передайте параметр ajax data как объект, не преобразовывайте его в JSON. Затем в PHP используйте $_POST напрямую.

Используйте инструменты firebug или chrome для анализа запроса ajax и посмотрите, какие данные отправлены

Ответ 3

Используйте эту простую функцию jquery для выполнения вашей задачи

$.ajax({           
            type: "POST",  
            url:"scripts/dummy.php",  
            data:"tbl="+table,
            dataType:"json", //if you want to get back response in json

            beforeSend: function()
            {                   

            },
            success: function(resp)
            {               

            }, 

            complete: function()
            {

            },

            error: function(e)
            {  
            alert('Error: ' + e);  
            }  

    }); //end Ajax

Ответ 4

в использовании PHP:

if(isset($_POST['ClientData'])){
   $client_data = $_POST['ClientData']
}

теперь $client_data переменная должна содержать array.

Для цели отладки вы можете использовать встроенную функцию print_r() php. Это очень удобно.

вот пример:

//make sure it post request
if(isset($_POST)){
   //now print the array nicely
   echo "<pre>";
   print_r($_POST);
   echo "</pre>";
}