10

首先,我承认我是 新手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","kamlesh.vadiyatar@gmail.com","9998305904",false]}
4

4 回答 4

7

如果我理解正确,您需要创建一个能够从客户端接收类似 REST 的请求的 PHP 服务。

为了做到这一点,您需要访问原始 POST 数据。在 PHP 中,它是这样完成的:

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

您可以php://inputwrappers 文档中了解更多信息。

当然,从客户端来看,数据需要使用 POST 方法和作为原始数据(即作为字符串)发送。您可以从已经使用的对象中获取字符串JSON.stringify()

如果您传递一个对象,它将由 jQuery 在内部使用查询字符串格式转换为字符串。有关$.ajax 的 jQuery 文档的更多信息(最重要的选项是dataand processData)。

于 2013-05-22T12:35:08.700 回答
3

只需将 ajax 数据参数作为对象传递,不要将其转换为 JSON。然后在 PHP 中直接使用 $_POST 。

使用 firebug 或 chrome dev 工具分析 ajax 请求并查看发送了哪些数据

于 2013-05-08T06:15:45.603 回答
-1

使用这个简单的 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
于 2013-05-08T06:22:37.417 回答
-1

在 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>";
}
于 2013-05-24T11:10:36.713 回答