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

我已经检查了其他各种关于SO的post,但我似乎没有看到问题,并希望你能帮助我解决这个问题。 基本上,我正在进行微博应用并在点击按钮时插入推文,该按钮调用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调用成功,并且插入了推文,但我无法在success参数下获得对fireback的警报调用。 我尝试了像alert('abc');这样基本的东西alert('abc'); 但它也没有用。

 tweet.php 

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

  

这只是data.status文插入数据库,我想尝试发回简单的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文件顶部包含的另一个文件中定义的,这是有效的。

非常感谢有关此的一些建议,谢谢!

UPDATE

改变success complete ,它的工作原理。 但是, data对象似乎有点奇怪:

data.status在警报中弹出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() {}  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

控制台错误scrn拍摄

控制台错误

试试这个:

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

请尝试以下代码。 我在向服务器发送数据时添加了内容类型,在成功方法中使用了parseJson方法,

 $.ajax({ url: "../php/tweet.php", data: '{"author": "' + $("#username").text().split("@")[1] + '","tweet": "' + tweet_text + '","date": "' + getTimeNow() + '"}', dataType: "json", contentType: "application/json; charset=utf-8", type: "POST", success: function (data) { var myResult = $.parseJSON(data); }, error: function (err) { alert(err) } }); 

如果您有任何说明,可以查看jquery ajax文档

注意:如果为error方法添加回调,它会对您有所帮助

尝试在PHP文件中设置内容类型:

 header( 'Content-Type: application/json' ); 

然后回显你的数据:

 echo json_encode( $data ); 

并停止脚本:

 exit; 

希望能帮助到你!