搜尋
首頁web前端js教程Jquery使用Firefox FireBug外掛程式調試Ajax步驟解說_jquery

首先,我們用一個範例來說明JQuery的Ajax呼叫過程,

實現的一個功能是:點擊確認支付按鈕之後,實現餘額支付的功能:

1.首先在php頁面將相關需要呼叫的函數綁定到按鈕上:

複製程式碼 程式碼如下:

$(function(){

    $("#pay_btn").bind("click",ABC.balancePay);

});

2.腳本處:

如果使用$.post方式實作:

複製程式碼 程式碼如下:

var ABC = {

    balancePay: function(event){

        event.preventDefault();

        var tthis = $(event.currentTarget);

        var form = tthis.parents(‘form');

        var url = form.attr(‘action');

        var data = ‘code=15′ ;// $(‘#verifyCode').val();

        var jqXhr = $.post(url, data, undefined, ‘jsonp');

        jqXhr.done(function(datas){

                //console.log(‘這裡是由console印製出來的'); //#4

                $("#msg").text(‘結果:'data);

});

}

$.post方式也可以直接指定回呼函數:

複製程式碼 程式碼如下:

var jqXhr = $.post(url,url, function (data){

            $("#msg").text('結果:' data);

}, 'jsonp');

使用$.ajax方法實作:

複製程式碼 程式碼如下:

var jqXhr = $.post(url,url, function (data){

            $("#msg").text(‘結果:' data);

}, ‘jsonp');

使用$.ajax方法實作:

複製程式碼 程式碼如下:

var jqXhr = $.ajax({var jqXhr = $.ajax({

var jqXhr = $.ajax({

var jqXhr = $.ajax({

var jqXhr = $.ajax({

            type: ‘post',

            url: url,

            data: {code: ‘15′},

            dataType: ‘jsonp',

            sccuess:function(data){

            alert(‘good');},

            error: function(XMLHttpRequest, textStatus, errorThrown) {  //#3這個error      alert(XMLHttpRequest.status);

                     (XMLHttpRequest.readyState);

                           },

});

3.伺服器端:

複製程式碼
程式碼如下:

public function actionInterPayProc($callback)

{

//header("content-type: text/javascript");

//header(‘Content-type: text/html; charset=utf-8′);

         $code = $_POST['code'];

        //$code  //#1 此处给出一个有语法错误的表达式

        //echo $code;  //#2  此处标记,用于后面调试说明;

        …

        $result = 1;

            //echo $_POST['callback']. ‘(‘ . json_encode($result) . ‘);';//注意使用的编码方式需要和客户端请求保持一致;

exit(0);

}



调试工具

Firefox有强大FireBug 插件,现在比较新的浏览器如 Chrome 和 Safari,以及 IE 8都内置了调试工具,借助于这些调试工具,可以非常详细的查看 Ajax 的执行过程(chrome和firefox中调出调试工具的快捷键是ctrl+shift+c);
以下使用FireBug;


1.使用firebug,查看回调:

对于Ajax方法,是通过异步执行的服务器端程序,如果服务器端出错,在页面上不会显示的,我们需要借助调试工具来查看;例如,将以上示例中#2的注释去掉,触发ajax请求一次,可以在控制台面板中查看到错误的返回结果:

Jquery使用Firefox FireBug外掛程式調試Ajax步驟解說_jquery
 

如果是伺服器端程式出錯,也可以直接看到,出錯原因跟一般普通的頁面一樣,只不過是在ajax返回的面板中查看(web瀏覽器頁面中不會有任何顯示)。
這裡需要說明的是,如果在伺服器端使用了echo等方法將需要查看的變數列印出來了,那麼,ajax呼叫的結果一定是失敗的,因為這樣看上去的回調函數名稱被更改了,造成無法解析;

例如,列印的變數是333,那麼最後回呼的結果是:333ajaxcallbak(1);客戶端尋找333ajaxcallbak這個函數名,無法解析。

2.使用error函數列印錯誤訊息:

$.ajax()有一個error參數,可以指定一個函數,在請求失敗時,將呼叫此方法。這裡給出的信息,對於調試來說,非常有用;

error:function (XMLHttpRequest, textStatus, errorThrown)

error事件回傳的第一個參數XMLHttpRequest有一些有用的資訊:

XMLHttpRequest.readyState:

其傳回的狀態碼對應了一個錯誤說明:

狀態碼

0 -(未初始化)還沒有呼叫send()方法

1 -(載入)已呼叫send()方法,正在傳送請求

2 -(載入完成)send()方法執行完成,已經接收到全部回應內容

3 -(互動)正在解析回應內容

4 -(完成)回應內容解析完成,可以在客戶端呼叫了

XMLHttpRequest.status:

這裡回傳的狀態碼就是我們日常見到的HTTP狀態;例如404,表示沒有找到頁面;

textStatus:

"timeout", "error", "notmodified" 和 "parsererror"。

(默 識別: 自動判斷 (xml 或 html)) 請求失敗時呼叫時間。參數有以下三個:XMLHttpRequest 物件、錯誤訊息、(可選)擷取的錯誤物件。如果發生了錯誤,錯誤訊息(第二個參數)除了得到null之外,還可能是"timeout", "error", "notmodified" 和 "parsererror"。

透過這個error函數,程式出​​錯就很容易排查;

例如上面的#2處,去掉註釋,相當於更改了回呼函數名稱;在erro裡就會報:parsererror;

3.使用console.log印輸出:(alert()也可以)

這只是一個增強調試體驗的輔助方法。對於js中的關注變數跟踪,我們可透過alert()方法列印出來,不過彈出框頻繁會讓人煩躁。 console.log是一個替代方式,它是firebug插件的一個方法。 console.log印出來的變數結果會顯示在firebug的控制檯面板中;

可能的出錯原因:

1.如果回傳的結果格式不正確,在firebug中能看到結果;

2.對於JSON請求,對格式比較嚴格:

如果透過error函數打出來的報錯是:parsererror

可能的原因是伺服器端腳本編碼的問題;可以在服務端處理函數內處理的第一行加上對應的header資訊:

eg:header('Content-type: text/html; charset=utf-8');

當然,最有可能的是格式不正確:

複製程式碼 程式碼如下:

echo "{'re':'success'}" ;jquery不能解析
echo "{"re":"success"}";就沒有錯誤

不要輸出怪異的json格式的字串,要不jq1.4 版本不會執行success回呼。如{abc:1}或{'abc':1},要輸出

複製程式碼 程式碼如下:

{"abc":1}

{'success':true}改為{"success":true}

 

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Ubuntu Linux中如何删除Firefox Snap?Ubuntu Linux中如何删除Firefox Snap?Feb 21, 2024 pm 07:00 PM

要在UbuntuLinux中删除FirefoxSnap,可以按照以下步骤进行操作:打开终端并以管理员身份登录到Ubuntu系统。运行以下命令以卸载FirefoxSnap:sudosnapremovefirefox系统将提示你输入管理员密码。输入密码并按下Enter键以确认。等待命令执行完成。一旦完成,FirefoxSnap将被完全删除。请注意,这将删除通过Snap包管理器安装的Firefox版本。如果你通过其他方式(如APT包管理器)安装了另一个版本的Firefox,则不会受到影响。通过以上步骤

jquery实现多少秒后隐藏图片jquery实现多少秒后隐藏图片Apr 20, 2022 pm 05:33 PM

实现方法:1、用“$("img").delay(毫秒数).fadeOut()”语句,delay()设置延迟秒数;2、用“setTimeout(function(){ $("img").hide(); },毫秒值);”语句,通过定时器来延迟。

axios与jquery的区别是什么axios与jquery的区别是什么Apr 20, 2022 pm 06:18 PM

区别:1、axios是一个异步请求框架,用于封装底层的XMLHttpRequest,而jquery是一个JavaScript库,只是顺便封装了dom操作;2、axios是基于承诺对象的,可以用承诺对象中的方法,而jquery不基于承诺对象。

jquery怎么修改min-height样式jquery怎么修改min-height样式Apr 20, 2022 pm 12:19 PM

修改方法:1、用css()设置新样式,语法“$(元素).css("min-height","新值")”;2、用attr(),通过设置style属性来添加新样式,语法“$(元素).attr("style","min-height:新值")”。

jquery怎么在body中增加元素jquery怎么在body中增加元素Apr 22, 2022 am 11:13 AM

增加元素的方法:1、用append(),语法“$("body").append(新元素)”,可向body内部的末尾处增加元素;2、用prepend(),语法“$("body").prepend(新元素)”,可向body内部的开始处增加元素。

jquery怎么删除div内所有子元素jquery怎么删除div内所有子元素Apr 21, 2022 pm 07:08 PM

删除方法:1、用empty(),语法“$("div").empty();”,可删除所有子节点和内容;2、用children()和remove(),语法“$("div").children().remove();”,只删除子元素,不删除内容。

jquery怎么去掉只读属性jquery怎么去掉只读属性Apr 20, 2022 pm 07:55 PM

去掉方法:1、用“$(selector).removeAttr("readonly")”语句删除readonly属性;2、用“$(selector).attr("readonly",false)”将readonly属性的值设置为false。

jquery on()有几个参数jquery on()有几个参数Apr 21, 2022 am 11:29 AM

on()方法有4个参数:1、第一个参数不可省略,规定要从被选元素添加的一个或多个事件或命名空间;2、第二个参数可省略,规定元素的事件处理程序;3、第三个参数可省略,规定传递到函数的额外数据;4、第四个参数可省略,规定当事件发生时运行的函数。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
1 個月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境