Publishing or uploading failed. Error message: “Th

2020-08-16 18:51发布

问题:

Today I got an issue in WordPress. When I try to create a new page and uploading a new image in the WordPress admin section, I try to find out the solution, but I didn't get it... So after sanding an hour I got a solution...

Error

"Publishing failed. Error message: The response is not a valid JSON response."

回答1:

Go to settings>permalinks. Select "Post name" and save.

Try updating your posts/pages. If it doesnot work, try selecting another option in the settings>permalinks.



回答2:

Right now, you can use the Classic Editor plugin for fixing this issue.

The answer for the error is the editor I didn't know, but there is a new editor issue. If you are getting the same issue, then please use the below plugin. For fixing these issues, I'm doing R&D on this issue. If I get an exit solution, then will I make an update soon...



回答3:

Changing the permalink settings as mentioned previously fixed the problem for me. If you keep "Post name" as the permalink setting, then the .htaccess file needs to be writable by wordpress.

Alternatively the below can be pasted at the bottom of .htaccess file. Mod_rewrite changes are executed from the bottom of the file first.

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>


回答4:

I had the same problem on a local dev environment and found the issue was due to rewrite permissions. Make sure your .htaccess file has the proper permission.

sudo chmod 755 .htaccess

After permissions are set, save your permalink settings. If the problem still exists, make sure mod_rewrite is enabled. The following will work for apache2 on Ubuntu.

sudo a2enmod rewrite
sudo systemctl apache2 restart

If still not working, your apache config is probably too strict. The following should do the trick for apache2 on Ubuntu. Edit /etc/apache2/apache2.conf and look for the root directory block. It's normally the one with /var/www like below. You will probably see AllowOverride None. Just change it to All like below for your local, but you probably want to do some research and be more secure on a production server.

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

After the change is made do another restart on apache and all should be good.

sudo systemctl apache2 restart


回答5:

Maybe you have a security issue with mixed content (HTTP and https URLs). Step-1 1. 1. Check your Wordpress URL. Go to Settings -> permalink then click plain and save a page. then remove error

Step-2

  1. Check your Wordpress URL. Go to Settings -> General
  2. Change Wordpress Adress and Site Adress to https://

This solved the problem for me



回答6:

I just installed classic editor plugin and it sorted out the “The response is not a valid JSON response” problem.



回答7:

I had the same "not a valid JSON response" error when trying to publish my content. WordPress seems to do a JSON post when publishing a new post/page so I checked the network tab in my Developer Tools. If you check the "response" tab for this JSON call you might see some more details about this invalid JSON response.

In my case (yours might be different) some deprecated debug message was outputted before the actual JSON data and messed up the response. After fixing the deprecated message publishing worked again.

<br />
<b>Deprecated</b>:  Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. in <b>Unknown</b> on line <b>0</b><br />
<br />
<b>Warning</b>:  Cannot modify header information - headers already sent in <b>Unknown</b> on line <b>0</b><br />
{__NORMAL_JSON_DATA_HERE__}



回答8:

Looks like this still has not been fixed.

A workaround that worked for me (posting in case it works for someone else too) - in my case I was using an HTML block which was causing the issue. What I did was to add a Paragraph block > Edit as HTML. It resolved the issue for now. It's a shame that WP didn't look into it yet, seems like it's been happening for a while.



回答9:

I had this same error and the cause in my case was a shortcode used in the page and the function that defined the shortcode was using 'echo' to output the data rather than using 'return'



回答10:

I'd been getting the same error message when adding and/or updating pages, in addition to various other random errors. I was getting the errors on both my local development server and my webhost. When changing to one of the default themes (e.g. twenty nineteen), the errors would go away. For me, the problem turned out to be in my page template files. I'd noticed that when choosing a template for a newly created page, I'd have multiple choices with the same name.

I have several page template files (e.g. about-page.php, contact-page.php, services-page.php, etc.). When creating these files, since most of these pages were similar, I would just copy/paste from an existing file to make a new xxxx-page.php file. However, in some of those copied files (not all), I'd forgotten to modify the 'Template Name' (at the top of the file).

After I'd gone through and made sure all of my template files had unique names, the JSON error went away. All of my other errors disappeared as well. I'm using Wordpress 5.4.



回答11:

My issue was .htaccess related. I got the hint from LucasBr's comment about a ".htaccess configuration problem". Since I had copied the site to my local dev environment. I needed to update the custom mod_rewrite settings to match my setup.

The important lines were:

RewriteBase /

and

RewriteRule . /index.php [L]

They had previously been set to access a sub-directory site.



回答12:

Go to /etc/nginx/sites-available/ open default file --> sudo vi default or sudo nano default

Add Below line to the location:

Add the comment : #try_files $uri $uri/ =404;

Add this line : try_files $uri $uri/ /index.php?$args;

See the screenshot below described with red line :



回答13:

This is a permalinks error.

Do these steps to fix it (depending upon the cause in your scenario) as explained here: https://wordpress786.com/updating-failed-error-message-the-response-is-not-a-valid-json-response/ :

  1. go to settings > permalinks and save them once again
  2. if you're on nginx, go to site nginx conf file and make sure that it contains the rules for wordpress permalinks (usual nginx configurationn for wordpress, ask me if confused)
  3. restart nginx if you make any edits to conf file


回答14:

If you face issue on image upload follow this: https://navinrao.com/the-response-is-not-a-valid-json-response/

I was getting this issue while updating normal text too. The issue I face was due to having javascript:void(0) keyword inside my link () .

Please be sure if your content has keyword containing javascript before updating.

<a href="javascript:void(0)" target="_blank" title="Linkedin" class="social-color-3"><i class="fa fa-linkedin" aria-hidden="true"></i></a>

After I remove javascript:void(0) ; it works fine. Have a nice time :)



回答15:

Try removing any redirects to the WordPress site including subdomains.



标签: wordpress