这可能很容易,但我真的可以用 Ajax 和 JSON 的方式使用更聪明的人来提供帮助。我有 Javascript 函数将 Ajax 请求传递给 PHP 后端。我将一个 javascript 对象作为“request_parameters”后变量传递。当这出现在 PHP 上时,我可以导航它,但对象结构已被数组替换。相反,我希望对象结构保持完整,因此作为足够聪明的危险类型,我决定对对象进行 JSON 编码:
request_parameters: JSON.encode( requestObj );
与只是
request_parameters: requestObj;
在 PHP 方面,我现在将其作为“request_parameters”变量(又名 $_POST['request_paramenters'])的值:
{\"forms\":[{\"formName\":\"main-form\",\"formClass\":\"lg-form main-form\",\"formFields\":[{\" id\":\"activity-app_id\",\"name\":\"activity-app_id\",\"value\":\"0\",\"type\":\"hidden\", \"startingValue\":null},{\"id\":\"activity-start_time\",\"name\":\"activity-start_time\",\"value\":\"\",\ "type\":\"hidden\",\"startingValue\":null},{\"id\":\"min-duration\",\"name\":\"min-duration\",\ "class\":\"span1 form-ignore\",\"value\":\"50\",\"type\":\"text\",\"startingValue\":null},{\" ID\”:\”activity-duration\",\"name\":\"activity-duration\",\"value\":\"3000000\",\"type\":\"hidden\",\"startingValue\": null},{\"id\":\"运动距离\",\"名称\":\"运动距离\",\"class\":\"输入span1 left\",\"value\ ":\"25\",\"type\":\"text\",\"startingValue\":null},{\"id\":\"exercise-distance-uom\",\"name\ ":\"exercise-distance_uom\",\"value\":\"miles\",\"type\":\"hidden\",\"startingValue\":null},{\"id\": \"exercise-pace_average\",\"name\":\"exercise-pace_average\",\"value\":\"2\",\"type\":\"hidden\",\"startingValue\":null},{\"id\":\"wp_posts-post_content\",\"name\":\"wp_posts-post_content\",\"class\":\"span5\" ,\"value\":\"super fast\",\"type\":\"textarea\",\"startingValue\":null}]}],\"action\":\"went-running\ ",\"post_type\":\"练习\",\"primaryForm\":0}0}0}
好的,所以这显然是经过编码的,这样数据就可以作为 POST/GET 变量传递而不会发生坏事。很公平。我想我可以在 PHP 端通过在运行 json_decode 函数之前使用解码来解决这个问题。我第一次尝试:
$request_parameters = json_decode( urldecode($request_parameters) );
确信这将是一个赢家。没有。它没有给出错误,但 $request_parameters 似乎没有设置任何东西。好的,然后我有点发疯了,想……“嘿,也许 javascript 使用了 base64 编码”……这导致我:
$request_parameters = json_decode( base64_decode($request_parameters) );
坏朱朱。我会把它留在那里。
任何帮助将不胜感激。