ajax的sucess中不能alert,javascript - AJAX success callback alert not working? - Stack Overflow

I've checked out various other posts on SO, but I don't seem to see the problem, and was hoping if you could help me shed some light on this issue. Basically, I'm doing a microblogging appliation and inserting a tweet when a button is clicked, which calls the jQuery ajax function. Here's the respective code:

home.js

This is the ajax jquery call

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);

}

})

}

The ajax call works successfully, and the tweet is inserted, but I can't get the alert call to fireback under the success parameter. I tried something basic like alert('abc'); but it didn't work either.

tweet.php

This is just a wrapper, looks like this:

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);

?>

This just inserts the tweet into the database, and I wanted to try sending simple JSON formatted data back, but data.status didn't work on the success callback.

db_functions.php

This is where the insert_tweet function is in, and it looks like this:

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);

}

I've tested it, and I'm pretty sure this runs fine. I doubt this is the cause of the problem, but if it is, I'm all ears. I've tested the $link, which is defined in another file included in the top of the db_functions.php file, and this works.

Would appreciate some advice regarding this, thanks!

UPDATE

Changed success to complete, and it works. However, the data object seems a bit odd:

data.status pops up 200 in the alert

I tried changing the JSON array element name to data['success'] in PHP, and accessed it in the front end with data.success, and it outputted this in the alert box:

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;…

What does this mean??

UPDATE 2

Okay, I don't know if this helps, but I've printed the console log from Chrome's inspector, and if I'm not mistaken, the JSON data is sent back just fine. Here's the entire log:

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() {}

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] }

UPDATE 3

Console error scrn shot

7wzLb.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值