gpt4 book ai didi

javascript - AJAX 成功回调警报不起作用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:44:33 24 4
gpt4 key购买 nike

我已经查看了关于 SO 的其他各种帖子,但我似乎没有看到问题所在,希望您能帮我阐明这个问题。基本上,我正在做一个微博应用程序并在单击按钮时插入一条推文,这会调用 jQuery ajax 函数。这是相应的代码:

home.js

这是 ajax jquery 调用

function sendTweet(single_tweet) {
var tweet_text = $("#compose").val();

tweet_text = tweet_text.replace(/'/g, "'");
tweet_text = tweet_text.replace(/"/g, """);

var postData = {
author : $("#username").text().split("@")[1], // be careful of the @! - @username
tweet : tweet_text,
date : getTimeNow()
};

$.ajax({
type : 'POST',
url : '../php/tweet.php',
data : postData,
dataType : 'JSON',
success : function(data) {
alert(data.status);
}
})
}

ajax 调用成功,tweet 被插入,但是我无法在 success 参数下获得对 fireback 的警报调用。我尝试了一些基本的方法,比如 alert('abc'); 但它也没有用。

tweet.php

这只是一个包装器,看起来像这样:

<?php
include 'db_functions.php';

$author = $_POST['author'];
$tweet = $_POST['tweet'];
$date = $_POST['date'];

insert_tweet($author, $tweet, $date);

$data = array();
$data['status'] = 'success';
echo json_encode($data);
?>

这只是将推文插入数据库,我想尝试发回简单的 JSON 格式的数据,但 data.status 在成功回调中不起作用。

db_functions.php

这是 insert_tweet 函数所在的位置,它看起来像这样:

function insert_tweet($author, $tweet, $date) {
global $link;
$author_ID = get_user_ID($author);
$query = "INSERT INTO tweets (`Author ID`, `Tweet`, `Date`)
VALUES ('{$author_ID}', '{$tweet}', '{$date}')";
$result = mysqli_query($link, $query);
}

我已经测试过了,我很确定它运行良好。我怀疑这是问题的原因,但如果是,我洗耳恭听。我已经测试了 $link,它是在 db_functions.php 文件顶部的另一个文件中定义的,并且可以正常工作。

希望得到一些关于这方面的建议,谢谢!

更新

success 更改为 complete,并且它有效。但是,data 对象似乎有点奇怪:

data.status在alert中弹出200

我尝试在 PHP 中将 JSON 数组元素名称更改为 data['success'],并在前端使用 data.success 访问它,并输出这在警告框中:

function () {
if ( list ) {
// First, we save the current length
var start = list.length;
(function add( args ) {
jQuery.each( args, function( _, arg ) {
var type = jQuery.type( arg );
if ( type === "function" ) {
if ( !options.unique || !self.has( arg ) ) {
list.push( arg );
}
} else if ( arg && arg.length && type !== "string" ) {
// Inspect recursively
add( arg );
}
});
})( arguments );
// Do we need to add the callbacks to the
// current firing batch?
if ( firing ) {
firingLength = list.length;
// With memory, if we're not firing then
// we should call right away
} else if ( memory ) {
firingStart = start;…

这是什么意思??

更新 2

好吧,我不知道这是否有帮助,但我已经从 Chrome 的检查器中打印了控制台日志,如果我没记错的话,JSON 数据会很好地发回。这是整个日志:

Object {readyState: 4, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}
abort: function ( statusText ) {
always: function () {
complete: function () {
arguments: null
caller: null
length: 0
name: ""
prototype: Object
__proto__: function Empty() {}
<function scope>
done: function () {
error: function () {
fail: function () {
getAllResponseHeaders: function () {
getResponseHeader: function ( key ) {
overrideMimeType: function ( type ) {
pipe: function ( /* fnDone, fnFail, fnProgress */ ) {
progress: function () {
promise: function ( obj ) {
readyState: 4
responseJSON: Object
status_success: "success"
__proto__: Object
responseText: "{"status_success":"success"}"
status_success: "success"
__proto__: Object
responseText: "{"status_success":"success"}"
setRequestHeader: function ( name, value ) {
state: function () {
status: 200
statusCode: function ( map ) {
statusText: "OK"
success: function () {
then: function ( /* fnDone, fnFail, fnProgress */ ) {
__proto__: Object
__defineGetter__: function __defineGetter__() { [native code] }
__defineSetter__: function __defineSetter__() { [native code] }
__lookupGetter__: function __lookupGetter__() { [native code] }
__lookupSetter__: function __lookupSetter__() { [native code] }
constructor: function Object() { [native code] }
hasOwnProperty: function hasOwnProperty() { [native code] }
isPrototypeOf: function isPrototypeOf() { [native code] }
propertyIsEnumerable: function propertyIsEnumerable() { [native code] }
toLocaleString: function toLocaleString() { [native code] }
toString: function toString() { [native code] }
valueOf: function valueOf() { [native code] }
get __proto__: function __proto__() { [native code] }
set __proto__: function __proto__() { [native code] }

更新 3

控制台错误截图

console error

最佳答案

试试这个:

$.ajax({
type : 'POST',
url : '../php/tweet.php',
data : postData,
dataType : 'json',
complete : function(data) {
alert(data.status);
}
})

关于javascript - AJAX 成功回调警报不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24360626/

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