JSON输出返回页面源代码

时间:2018-03-03 作者:Beee

我已经为Wordpress的插件ACF编写了一个插件/扩展,它完成了在默认WP安装上安装时需要做的事情。我写这个插件是因为我需要在自己的网站上使用这个功能。直到最近,我注意到它抛出了一个JSON错误(以非管理员身份登录时),它才在那里正常工作。

JSON错误为“未捕获语法错误:位置1处JSON中的意外标记”这是错误:

Uncaught SyntaxError: Unexpected token < in JSON at position 1
    at JSON.parse (<anonymous>)
    at city-selector.js?ver=0.4:15
    at Object.success (city-selector.js?ver=0.4:64)
    at j (jquery.js:3099)
    at Object.fireWith [as resolveWith] (jquery.js:3211)
    at x (jquery.js:8264)
    at XMLHttpRequest.<anonymous> (jquery.js:8605)
当我调试输出时(以管理员身份登录时),它会准确地显示出我所期望的结果。预期产量(选择荷兰时):

[{"country_code":"","state_code":"","state_name":"Select a province\\/state"},{"country_code":"NL","state_code":"DR","state_name":"Drenthe"},{"country_code":"NL","state_code":"FL","state_name":"Flevoland"},{"country_code":"NL","state_code":"FR","state_name":"Friesland"},{"country_code":"NL","state_code":"GE","state_name":"Gelderland"},{"country_code":"NL","state_code":"GR","state_name":"Groningen"},{"country_code":"NL","state_code":"LI","state_name":"Limburg"},{"country_code":"NL","state_code":"NB","state_name":"Noord-Brabant"},{"country_code":"NL","state_code":"NH","state_name":"Noord-Holland"},{"country_code":"NL","state_code":"OV","state_name":"Overijssel"},{"country_code":"NL","state_code":"UT","state_name":"Utrecht"},{"country_code":"NL","state_code":"ZE","state_name":"Zeeland"},{"country_code":"NL","state_code":"ZH","state_name":"Zuid-Holland"}]
当我调试输出时(以非管理员身份登录时),它会显示页面的源代码,而不是JSON,因此它会作为错误返回,因为<;JSON中不允许。这对我来说很有意义。

我不明白的是为什么它不返回它需要的东西。我认为这可能与无法访问ajaxurl或没有适当的用户权限有关,但当我在“香草”WP安装中测试它时,一切都正常。

calls get_states function (抛出JSON错误)

get_states function

get_states_call function

我已经复制了get\\u states\\u call函数,以便在每次页面加载时调用,以调试json\\u encode($项)的输出。然后它确实给了我期望的输出(在每个用户角色上),那么它如何在函数中的echo和调用之间出错呢?

如果你去http://sd8.dutch-downhill.com

login = Tom
pass = 654321
转到“添加个人资料”并在表单上选择一个国家/地区。

我添加了一个console.log(response); 在代码的第15行调用get_states。

1 个回复
最合适的回答,由SO网友:Beee 整理而成

我最初的想法是正确的。

 I thought it might have something to do with not being able to access the
 ajaxurl or so or not having the proper user rights.
我忽略了一个用户重定向(它是在错误的位置定义的),因此我错过了它,因此用户被重定向到正确的页面,因为他/她在管理中是不允许的。我所需要做的就是找到一种为管理员ajax url创建IF的方法。

结束
JSON输出返回页面源代码 - 小码农CODE - 行之有效找到问题解决它

JSON输出返回页面源代码

时间:2018-03-03 作者:Beee

我已经为Wordpress的插件ACF编写了一个插件/扩展,它完成了在默认WP安装上安装时需要做的事情。我写这个插件是因为我需要在自己的网站上使用这个功能。直到最近,我注意到它抛出了一个JSON错误(以非管理员身份登录时),它才在那里正常工作。

JSON错误为“未捕获语法错误:位置1处JSON中的意外标记”这是错误:

Uncaught SyntaxError: Unexpected token < in JSON at position 1
    at JSON.parse (<anonymous>)
    at city-selector.js?ver=0.4:15
    at Object.success (city-selector.js?ver=0.4:64)
    at j (jquery.js:3099)
    at Object.fireWith [as resolveWith] (jquery.js:3211)
    at x (jquery.js:8264)
    at XMLHttpRequest.<anonymous> (jquery.js:8605)
当我调试输出时(以管理员身份登录时),它会准确地显示出我所期望的结果。预期产量(选择荷兰时):

[{"country_code":"","state_code":"","state_name":"Select a province\\/state"},{"country_code":"NL","state_code":"DR","state_name":"Drenthe"},{"country_code":"NL","state_code":"FL","state_name":"Flevoland"},{"country_code":"NL","state_code":"FR","state_name":"Friesland"},{"country_code":"NL","state_code":"GE","state_name":"Gelderland"},{"country_code":"NL","state_code":"GR","state_name":"Groningen"},{"country_code":"NL","state_code":"LI","state_name":"Limburg"},{"country_code":"NL","state_code":"NB","state_name":"Noord-Brabant"},{"country_code":"NL","state_code":"NH","state_name":"Noord-Holland"},{"country_code":"NL","state_code":"OV","state_name":"Overijssel"},{"country_code":"NL","state_code":"UT","state_name":"Utrecht"},{"country_code":"NL","state_code":"ZE","state_name":"Zeeland"},{"country_code":"NL","state_code":"ZH","state_name":"Zuid-Holland"}]
当我调试输出时(以非管理员身份登录时),它会显示页面的源代码,而不是JSON,因此它会作为错误返回,因为<;JSON中不允许。这对我来说很有意义。

我不明白的是为什么它不返回它需要的东西。我认为这可能与无法访问ajaxurl或没有适当的用户权限有关,但当我在“香草”WP安装中测试它时,一切都正常。

calls get_states function (抛出JSON错误)

get_states function

get_states_call function

我已经复制了get\\u states\\u call函数,以便在每次页面加载时调用,以调试json\\u encode($项)的输出。然后它确实给了我期望的输出(在每个用户角色上),那么它如何在函数中的echo和调用之间出错呢?

如果你去http://sd8.dutch-downhill.com

login = Tom
pass = 654321
转到“添加个人资料”并在表单上选择一个国家/地区。

我添加了一个console.log(response); 在代码的第15行调用get_states。

1 个回复
最合适的回答,由SO网友:Beee 整理而成

我最初的想法是正确的。

 I thought it might have something to do with not being able to access the
 ajaxurl or so or not having the proper user rights.
我忽略了一个用户重定向(它是在错误的位置定义的),因此我错过了它,因此用户被重定向到正确的页面,因为他/她在管理中是不允许的。我所需要做的就是找到一种为管理员ajax url创建IF的方法。

相关推荐

使用JavaScript的WP REST API发布状态

我在WP REST API中弄脏了我的手。我已经阅读了一些教程,并对使用JavaScript创建新帖子提出了一个问题。在里面this 教程,帖子var status = \'draft\'; (请参见代码)。So I am just worried that won\'t anyone able to hack that status?jQuery( document ).ready( function ( $ ) { $( \'#post-submission-form\' ).on(