"code":"rest_invalid_json","message":"Invalid JSON body passed."
分类:WordPress
ajax请求wordpress rest api报错:("code":"rest_invalid_json","message":"Invalid JSON body passed.")
我不明白我做错了什么,谁能给我一个关于导致上述错误的原因的建议,下面是我的代码。我可以确认,我成功地到达了路线,因为里面的代码得到了它的执行。我还在最后添加了 1 值,按照 wp_send_json_success 将其传递给 json。在这一点上我不知道接下来要做什么,有人可以向我解释一下发生了什么吗?
router.php
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">update_employee_photo</span>(<span class="hljs-params"><span class="hljs-variable">$request</span></span>)</span>{
<span class="hljs-keyword">global</span> <span class="hljs-variable">$wpdb</span>;
<span class="hljs-variable">$data_with_photo</span> = <span class="hljs-keyword">array</span>(
<span class="hljs-string">'photo'</span> => <span class="hljs-variable">$request</span>[<span class="hljs-string">'photo'</span>],
<span class="hljs-string">'photo_privacy'</span> => <span class="hljs-variable">$request</span>[<span class="hljs-string">'photoPrivacy'</span>],
<span class="hljs-string">'photo_description'</span> => <span class="hljs-variable">$request</span>[<span class="hljs-string">'photoDescription'</span>]
);
<span class="hljs-variable">$data_null_photo</span> = <span class="hljs-keyword">array</span>(
<span class="hljs-string">'photo_privacy'</span> => <span class="hljs-variable">$request</span>[<span class="hljs-string">'photoPrivacy'</span>],
<span class="hljs-string">'photo_description'</span> => <span class="hljs-variable">$request</span>[<span class="hljs-string">'photoDescription'</span>]
);
<span class="hljs-variable">$data</span> = (<span class="hljs-variable">$request</span>[<span class="hljs-string">'photo'</span>] != <span class="hljs-string">"null"</span>) ? <span class="hljs-variable">$data_with_photo</span> : <span class="hljs-variable">$data_null_photo</span>;
<span class="hljs-variable">$where</span> = <span class="hljs-keyword">array</span>(<span class="hljs-string">'wp_user_id'</span> => get_current_user_id());
<span class="hljs-variable">$result</span> = <span class="hljs-variable">$wpdb</span>->update(<span class="hljs-string">"aupair_registered_employee"</span>, <span class="hljs-variable">$data</span>, <span class="hljs-variable">$where</span>);
<span class="hljs-keyword">if</span>(<span class="hljs-variable">$result</span>){
wp_send_json_success(<span class="hljs-variable">$result</span>, <span class="hljs-number">200</span>, <span class="hljs-number">1</span>);
} <span class="hljs-keyword">else</span> {
wp_send_json_error(<span class="hljs-variable">$wpdb</span>->last_query);
}
<span class="hljs-keyword">die</span>();
}
add_action(<span class="hljs-string">'rest_api_init'</span>, <span class="hljs-function"><span class="hljs-keyword">function</span>()</span>{
register_rest_route( <span class="hljs-string">'activeAupair/v1'</span>, <span class="hljs-string">'/updateEmployeePhoto'</span>, [
<span class="hljs-string">'methods'</span> => <span class="hljs-string">'POST'</span>,
<span class="hljs-string">'callback'</span> => <span class="hljs-string">'update_employee_photo'</span>
]);
});
file.js
$.<span class="hljs-title function_">ajax</span>({ <span class="hljs-attr">type</span>: <span class="hljs-string">'POST'</span>, <span class="hljs-attr">url</span>: myAjax.<span class="hljs-property">restURL</span> + <span class="hljs-string">'activeAupair/v1/updateEmployeePhoto'</span>, <span class="hljs-attr">contentType</span>: <span class="hljs-string">'application/json'</span>, <span class="hljs-attr">datatype</span>: <span class="hljs-string">'json'</span>, <span class="hljs-attr">data</span>: { <span class="hljs-attr">photo</span>: photo, <span class="hljs-attr">photoPrivacy</span>: <span class="hljs-title function_">getPhotoPrivacy</span>(), <span class="hljs-attr">photoDescription</span>: <span class="hljs-title function_">getPhotoDescription</span>() }, <span class="hljs-attr">beforeSend</span>: <span class="hljs-keyword">function</span> (<span class="hljs-params">xhr</span>) { xhr.<span class="hljs-title function_">setRequestHeader</span>(<span class="hljs-string">'X-WP-Nonce'</span>, myAjax.<span class="hljs-property">nonce</span>); }, <span class="hljs-attr">success</span>: <span class="hljs-keyword">function</span>(<span class="hljs-params">response</span>){ <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-string">'TYPE OF '</span>, <span class="hljs-keyword">typeof</span> response); <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-string">'RESPONSE '</span>, response); msg.<span class="hljs-title function_">empty</span>(); msg.<span class="hljs-title function_">append</span>($(<span class="hljs-string">'<p id="required"></p>'</span>).<span class="hljs-title function_">text</span>(<span class="hljs-string">'Updated'</span>)); uploadBtn.<span class="hljs-title function_">attr</span>(<span class="hljs-string">'value'</span>, <span class="hljs-string">'Update'</span>); uploadBtn.<span class="hljs-title function_">attr</span>(<span class="hljs-string">'disabled'</span>, <span class="hljs-literal">false</span>); }, <span class="hljs-attr">error</span>: <span class="hljs-keyword">function</span> (<span class="hljs-params">xhr, ajaxOptions, thrownError</span>) { }, <span class="hljs-attr">complete</span>: <span class="hljs-keyword">function</span>(<span class="hljs-params">data</span>){ <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-string">'COMPLETE '</span>, data); } });