Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用POST,使用JSON发送req/res来创建PHPWeb服务?_Php_Jquery_Json_Api - Fatal编程技术网

如何使用POST,使用JSON发送req/res来创建PHPWeb服务?

如何使用POST,使用JSON发送req/res来创建PHPWeb服务?,php,jquery,json,api,Php,Jquery,Json,Api,我被要求创建一个web服务,它使用POST而不是GET,因此应该没有查询字符串。当POST请求被发送到/myservice时,一个JSON对象将被传递一个名为“numbers”的属性 我认为这个规范要求表单只有两个字段,一个是保存数字的文本字段,用逗号分隔,另一个是提交按钮字段。 1) 我应该使用JavaScript和/或JQuery从表单字段中获取数字并将其转换为JSON对象吗? 具体来说,此人进入表单字段,姓名/id为“数字”,数字为:2、3、4。这需要变成这样: { "numbers"

我被要求创建一个web服务,它使用POST而不是GET,因此应该没有查询字符串。当POST请求被发送到/myservice时,一个JSON对象将被传递一个名为“numbers”的属性 我认为这个规范要求表单只有两个字段,一个是保存数字的文本字段,用逗号分隔,另一个是提交按钮字段。
1) 我应该使用JavaScript和/或JQuery从表单字段中获取数字并将其转换为JSON对象吗? 具体来说,此人进入表单字段,姓名/id为“数字”,数字为:2、3、4。这需要变成这样:

{
  "numbers": [
     2, 3, 4
   ]
 }
// custom callback function will trim the whitespace
// then convert to an integer
function trimAndConvert($string_number) {
    return (int)trim($string_number);
}

$numbers = explode(',', $_POST['your_numbers']); // get your input from $_POST
$numbers = array_map('trimAndConvert', $numbers); // trim whitespace and convert to int
$numbers = array('numbers' => $numbers);    

$json = json_encode($numbers);
然后我想我会或者可以使用JQuery的ajax方法将JSON数据字符串发送到 存在于以下位置的php web服务: 如前所述,它需要发送时不带任何查询参数。服务将返回一个json对象,表示所有数字的总和、所有数字的乘积以及平均值或平均值。因此,返回的结果将是

{
    "results": {
        "sum": 9,
        "product": 24,
        "average": 3
     }
}
我陷入困境的地方可能是最容易的地方。我可以让表单发布到同一页面,然后让JQuery检查表单是否发布,如果是,则将表单中输入的数字转换为JSON对象。JavaScript是否有权访问$\u POST变量? 或者我应该使用事件处理程序来响应对表单提交按钮的单击。但是,如何获取用户输入的数据并将其转换为参数为“numbers”的JSON对象呢

然后在服务器端,我需要解析JSON对象,对数字数组执行操作,然后创建要返回的JSON结果对象。
有人能给点建议吗?我不知道我是应该用PHP来完成整个工作,还是最好做一些客户端JQuery/JavaScript处理来创建JSON对象。 谢谢 布鲁斯

仔细看看。如果您的数字发布在一个字段中,则需要按分隔符将其拆分,形成一个数组,如下所示:

{
  "numbers": [
     2, 3, 4
   ]
 }
// custom callback function will trim the whitespace
// then convert to an integer
function trimAndConvert($string_number) {
    return (int)trim($string_number);
}

$numbers = explode(',', $_POST['your_numbers']); // get your input from $_POST
$numbers = array_map('trimAndConvert', $numbers); // trim whitespace and convert to int
$numbers = array('numbers' => $numbers);    

$json = json_encode($numbers);
用于指向一个自定义回调函数,该函数将从分解的位中删除空格(它们可能在任意一侧都有空格等),然后转换为整数。如果不转换为整数,则数字在JSON中显示为字符串(用引号括起来)

这将为您提供所需的JSON输出,例如:

{
  "numbers": [2, 3, 4]
 }
从这里,您可以使用CURL或其他几个不使用CURL的选项之一(如果您没有安装它的话)对该URL执行POST请求。见以下文章:

希望这有帮助