Получить данные 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 код для подключения к БД.

PHP-код:

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

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

  • Я являюсь не ясно, как ПУБЛИКОВАТЬ данные в PHP? Я попробовал использовать метод $_POST[''], а также многие другие.
  • Я использую eclipse в качестве php-фреймворка. поэтому я не могу отлаживать его при публикации данных. В обычном режиме я могу отлаживать свой код. но не удаленно.для этого я также внес изменения в файл php.ini.

Как получить ответ на публикацию данных о php-коде?

Как выполнить отладку через удаленную почту?

Образец моего запроса:

Предположим, я использовать:

Для, data: params, только в это время мой формат запроса.

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]}
Author: Jignesh.Raj, 2013-05-08

4 answers

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

Для этого вам необходимо получить доступ к необработанным почтовым данным . В PHP это делается так:

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

Вы можете прочитать больше о php://input в документации по оболочкам .

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

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

 7
Author: hegemon, 2013-05-22 12:35:08

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

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

 3
Author: Alex Barroso, 2013-05-08 06:15:45

Используйте эту простую функцию 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
 -1
Author: Sohail Ahmed, 2013-05-08 06:22:37

В PHP используется:

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

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

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

Вот пример:

//make sure it's post request
if(isset($_POST)){
   //now print the array nicely
   echo "<pre>";
   print_r($_POST);
   echo "</pre>";
}
 -1
Author: sha256, 2013-05-24 11:10:36