ホームページ  >  記事  >  ウェブフロントエンド  >  Ajaxのデータパラメータエラーによるページクラッシュの問題を解決する方法

Ajaxのデータパラメータエラーによるページクラッシュの問題を解決する方法

php中世界最好的语言
php中世界最好的语言オリジナル
2018-05-14 14:26:251699ブラウズ

今回は、ajax のデータパラメータエラーによってページクラッシュが発生する問題を解決する方法を説明します。 ajax のデータパラメータエラーによってページクラッシュが発生する場合の注意事項は何ですか? 以下は実際的なケースです。一緒に見てください。

今日、選択したテーブルの 1 行のデータを Ajax 経由でバックエンドに送信しようとしましたが、Web サイトがクラッシュしてしまいました。

コードは次のとおりです:

$('.icon-edit').click(function (event) {  这是一个按钮
    o=$('.icon-edit').index($(this))+1;
    edit.style.display='block';
    //console.log('$(this)',$(this).parent().parent());
    let message=$(this).parent().parent();
    $("#non").val(message.children('td:eq(0)').html());
    $("#name").val(message.children('td:eq(1)').html());
    $("#sex").val(message.children('td:eq(2)').html());
    $("#age").val(message.children('td:eq(3)').html());
    $("#xueyuan").val(message.children('td:eq(4)').html());
    $("#grade").val(message.children('td:eq(5)').html());
    $("#phone").val(message.children('td:eq(6)').html());
    $("#room").val(message.children('td:eq(7)').html());
    l=message.children('td:eq(0)').html();
  });
  $('#ok').click(function () {
    //event.stopImmediatePropagation();
    let text=$('table');
    id=$('#non').val();
    username=$('#name').val();
    sex=$('#sex').val();
    age=$('#age').val();
    institute=$('#xueyuan').val();
    grade=$('#grade').val();
    phone=$('#phone').val();
    hlbhl=$('#room').val()
    text.find("tr:eq("+o+")").children('td:eq(0)').text(id);
    text.find("tr:eq("+o+")").children('td:eq(1)').text(username);
    text.find("tr:eq("+o+")").children('td:eq(2)').text(sex);
    text.find("tr:eq("+o+")").children('td:eq(3)').text(age);
    text.find("tr:eq("+o+")").children('td:eq(4)').text(institute);
    text.find("tr:eq("+o+")").children('td:eq(5)').text(grade);
    text.find("tr:eq("+o+")").children('td:eq(6)').text(phone);
    text.find("tr:eq("+o+")").children('td:eq(7)').text(hlbhl);
    $.ajax({
      type: "POST",
      url: "doAction2.php",//请求的后台地址
      data: {
            non:o,
            id: id,
            username: username,
            sex: sex,
            age: age,
            institute: institute,
            grade: grade,
            phone: phone,
            hlbhl: hlbhl
      },//前台传给后台的参数
      dataType: "json",
      ansync: true,
      ContentType: "application/json; charset=utf-8",
      success: function (msg) {//msg:返回值
        a=2;
        console.log(a);
      }
    });
    edit.style.display='none';
  });
コードの一般的な考え方は、ボタン ($('.icon-edit')) をクリックすると、フォーム (編集) がポップアップし、フォーム データが表示されます。 [OK] ボタン ($('#ok')) をクリックすると、フォームを変更する目的を達成するために、フォーム データが前にクリックした行のデータを上書きします。 [OK] をクリックすると、ajax がトリガーされます。

変更されたデータをバックエンドに送信し、データを取得してデータベースを更新します。 結果ページはエラーを報告しませんでしたが、長時間確認した結果、ajaxのデータパラメータが間違って書かれていることがわかりました。

    id=text.find("tr:eq("+o+")").children('td:eq(0)').text(id);
    username=text.find("tr:eq("+o+")").children('td:eq(1)').text(username);
    sex=text.find("tr:eq("+o+")").children('td:eq(2)').text(sex);
    age=text.find("tr:eq("+o+")").children('td:eq(3)').text(age);
    institute=text.find("tr:eq("+o+")").children('td:eq(4)').text(institute);
    grade=text.find("tr:eq("+o+")").children('td:eq(5)').text(grade);
    phone=text.find("tr:eq("+o+")").children('td:eq(6)').text(phone);
    hlbhl=text.find("tr:eq("+o+")").children('td:eq(7)').text(hlbhl);
    $.ajax({
      type: "POST",
      url: "doAction2.php",//请求的后台地址
      data: {
            non:o,
            id: id,
            username: username,
            sex: sex,
            age: age,
            institute: institute,
            grade: grade,
            phone: phone,
            hlbhl: hlbhl
      },//前台传给后台的参数
      dataType: "json",
      ansync: true,
      ContentType: "application/json; charset=utf-8",
      success: function (msg) {//msg:返回值
        a=2;
        console.log(a);
      }
    });
    edit.style.display='none';
  });

からわかるように。上記では、data に渡したデータは String

などではなく、n.fn.init [td, prevObject: n.fn.init(1), context:

document

], ajax の不注意とエラーについてはあまり詳しくないので、最初はパラメーターが原因ではないと思って、長い間コードを読んで初めて原因がわかりました。この記事の事例を読んだ後にその方法を説明してください。さらに興味深い情報については、PHP 中国語 Web サイトの他の関連記事にご注目ください。

推奨読書:

ES6 で全画面スクロール プラグインを実装する手順の詳細な説明

Vue での watch の使い方のまとめ

以上がAjaxのデータパラメータエラーによるページクラッシュの問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。