gpt4 book ai didi

jquery - $.AJAX 帖子不工作

转载 作者:行者123 更新时间:2023-11-29 08:43:35 26 4
gpt4 key购买 nike

我正在为我的网站构建一个简单的类似系统。问题是,jquery post 没有按照它应该做的那样工作。

数据库表中没有插入任何值,成功函数也不起作用。

所有数据库表均已设置。

HTML:

<a href="javascript:like('85','17','product','1','3');" class="button like_click"><span><img src="wp-content/plugins/assets/images/icons/like-icon.png"> Like </span></a>

这是我的 jQuery。

function like(blog_id,object_id,object_type,user_id,default_count)
{

jQuery.ajax({
url: '/wp-content/plugins/assets/like.php',
type: 'post',
data: 'object_id=' + object_id + '&user_id=' + user_id + '&type=like&blog_id=' + blog_id + '&object_type=' + object_type,
dataType: json,
success: function(data)
{
jQuery('#' + object_id + '_count').html(data.total);
jQuery('.like_click').attr('href','javascript:unlike(\'' + blog_id + '\',\'' + object_id + '\',\'' + user_id + '\',\'' + object_type + '\',\'' + default_count + '\')');
jQuery('.like_click span').html('<img src="/wp-content/plugins/assets/images/icons/unlike-icon.png"> Unlike');
jQuery('.likes').html('You and <a href="#">' + default_count + ' others</a> like this.');
}
});

}

like.php

<?php
// include wordpress functions
include( $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php');
require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-admin/includes/plugin.php' );
global $wpdb;
$global_likes = $wpdb->base_prefix . "global_likes";
$global_table = $wpdb->base_prefix . "global_products_table";

$object_id = mysql_real_escape_string($_POST['object_id']);
$user_id = mysql_real_escape_string($_POST['user_id']);
$blog_id = mysql_real_escape_string($_POST['blog_id']);
$object_type = mysql_real_escape_string($_POST['object_type']);
$type = mysql_real_escape_string($_POST['type']);

$check_duplicate = $wpdb->get_row("SELECT object_id FROM ".$global_likes." WHERE object_type = '" .$object_type . "' and object_id = '".$object_id."' and blog_id = '" . $blog_id . "' and user_id = '" . $user_id . "' ");
if( empty($check_duplicate->object_id) && isset($_POST['object_id']) && isset($_POST['user_id']) && isset($_POST['blog_id']) && isset($_POST['object_type']) ) {

if( $type == "like" ) {

$wpdb->insert(
$global_likes,
array(
'user_id' => $user_id,
'blog_id' => $blog_id,
'object_id' => $object_id,
'object_type' => $object_type
)
);

$add_like = "UPDATE " . $global_table . " SET likes=likes+1 WHERE products_id = '".$object_id."' and blog_id = '" . $blog_id . "'";
$wpdb->query($add_like);

} elseif( $type == "unlike" ) {
$remove_like = "UPDATE " . $global_table . " SET likes=likes-1 WHERE products_id = '".$object_id."' and blog_id = '" . $blog_id . "'";
$delete_user_like = "DELETE FROM ".$global_likes." WHERE object_type = '" .$object_type . "' and object_id = '".$object_id."' and blog_id = '" . $blog_id . "' and user_id = '" . $user_id . "'";
$wpdb->query($remove_like);
$wpdb->query($delete_user_like);
}

$sql = mysql_fetch_assoc(mysql_query("SELECT likes FROM ".$global_table." WHERE products_id = '".$object_id."' and blog_id = '" . $blog_id . "'"));

echo json_encode(array('total' => $sql[0]['likes']));

} else {
wp_die('Error!');
}

?>

是否也可以只发布而不返回任何值,以便我可以删除 like.php 上的以下脚本。

 $sql = mysql_fetch_assoc(mysql_query("SELECT likes FROM ".$global_table." WHERE products_id = '".$object_id."' and blog_id = '" . $blog_id . "'"));

echo json_encode(array('total' => $sql[0]['likes']));

原因是,我已经有一个自动获取点赞数的函数了。

请帮忙。

最佳答案

您的ajax方法中的数据不是json,但您将类型指定为json。

编辑以下注释:dataType 用于预期返回数据,但 data: 对象应采用键值对表示法,如下例所示...

data: { object_id: object_id, user_id: user_id, type: 'like', blog_id: blog_id, object_type: object_type }

好吧,正如一位智者曾经说过的,RTM。事实证明,这两种方法都有效。

来自 Jquery 文档...

The data option can contain either a query string of the form key1=value1&key2=value2, or a map of the form {key1: 'value1', key2: 'value2'}. If the latter form is used, the data is converted into a query string using jQuery.param() before it is sent. This processing can be circumvented by setting processData to false. The processing might be undesirable if you wish to send an XML object to the server; in this case, change the contentType option from application/x-www-form-urlencoded to a more appropriate MIME type.

这意味着,尽管有赞成票,这个答案根本无法帮助解决您的问题,它只是一种语法替代方案。

关于jquery - $.AJAX 帖子不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13110087/

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