gpt4 book ai didi

javascript - 语法错误: Unexpected token s in JSON at position 1

转载 作者:行者123 更新时间:2023-12-01 02:16:57 26 4
gpt4 key购买 nike

我正在制作一个插件。我试图通过将 array/object/json 数组发布到此 php 代码来简单地更新 WordPress 中的帖子元:

public static function save_settings_fields(){

$myArray = json_decode($_POST['to_save']);
wp_send_json(var_dump($_POST['to_save']));

//i can't even get to this point.
$saved_content = json_decode($_POST['to_save']);
$post_id = $saved_content['post_id'];
$this_count = (int)$saved_content['index'];
$foobar = new POB_Save_Settings;
$isdone = $foobar->update_static_content($post_id, $this_count, $saved_content);
if ( is_wp_error( $isdone ) ) {

wp_send_json_error( $isdone );

} else {
wp_send_json( $isdone );
}
}

我的脚本是:

var SaveOptionSettings = function(postid, count){
var save_array = new Array();
save_array[0]= {};
save_array[0]['post_id'] = postid;
save_array[0]['content_count'] = count;
save_array[1] = {};
for(var i=0; i<$('#settings input').length; i++){
save_array[1][$('#settings input').eq(i).attr('id')] = $('#settings input').eq(i).val();
}
for(var i=0; i<$('#settings textarea').length; i++){
save_array[1][$('#settings textarea').eq(i).attr('id')] = $('#settings textarea').eq(i).val();
}
for(var i=0; i<$('#settings select').length; i++){
save_array[1][$('#settings select').eq(i).attr('id')] = $('#settings select').eq(i).val();
}
console.log(save_array, JSON.stringify(save_array));
var pva_ajax_url = pva_params.pva_ajax_url;

$.ajax({
type: 'POST',
url: pva_ajax_url,
dataType: 'json',
data: {
action: 'save_settings_fields',
'to_save': JSON.stringify(save_array)
}, success: function (result) {
M.toast({html: 'Saved!'})
},
error: function(xhr,textStatus,err)
{
console.log("readyState: " + xhr.readyState);
console.log("responseText: "+ xhr.responseText);
console.log("status: " + xhr.status);
console.log("text status: " + textStatus);
console.log("error: " + err);
}
});
}

wp_send_json 几乎只是向我发回 $_POST 所得到的内容,这显然是:

readyState: 4
responseText:
string(202) "[{\"post_id\":15404,\"content_count\":1},{\"label\":\"Options <span>(please select one)</span>\",\"use_conditionals\":\"on\",\"classes\":\"form-buttons\",\"style_id\":\"options\",\"subtitle\":\"test\"}]"
null
status: 200
text status: parsererror
error: SyntaxError: Unexpected token s in JSON at position 1

我尝试过的:

  • 对发布的信息使用 json_decode
  • contentType: "application/json" 添加到 AJAX
  • 删除 Stringify、dataType、将 dataType 更改为 Text 的所有组合
  • 将每个变量.push放入数组
  • 使数组成为对象,反之亦然

我做错了什么吗?

最佳答案

您的服务器响应以字符串 (202) 开头,这不是有效的 json

string(202) "[{\"post_id\":15404,\"content_count\":1},{\"label\":\"Options <span>(please select one)</span>\",\"use_conditionals\":\"on\",\"classes\":\"form-buttons\",\"style_id\":\"options\",\"subtitle\":\"test\"}]"
null

error: SyntaxError: Unexpected token s in JSON at position 1 

这是来自字符串

你的responseText应该是这样的

[{
"post_id": 15404,
"content_count": 1
}, {
"label": "Options <span>(please select one)</span>",
"use_conditionals": "on",
"classes": "form-buttons",
"style_id": "options",
"subtitle": "test"
}]

//更新

@lawrence-cherone php 端提及

var_dump()

wp_send_json(var_dump($_POST['to_save']));

此行需要删除或注释

感谢@lawrence-cherone

此外,如果您想调试内容,使用 echoprint_r 可能会取得更好的成功。

使用其中之一打印您在页面上输入的任何内容,然后将其作为 AJAX 中的 result 返回 success: function(result){ ... }.

关于javascript - 语法错误: Unexpected token s in JSON at position 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49441092/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com