我已经为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。