【问题标题】:Please help! - event.returnValue is deprecated. Please use the standard event.preventDefault() instead请帮忙! - event.returnValue 已弃用。请改用标准 event.preventDefault()
【发布时间】:2014-03-18 19:10:44
【问题描述】:

当我将 ajax 与 Google Chrome 一起使用时,我收到此消息 event.returnValue 已弃用。请改用标准 event.preventDefault() 我安装了新的 G.Chrome 和新的 jquery 库,但它没有生效。 我的代码在 Mozilla Firefox 中运行良好。 我有带有 jquery 代码的文件 - edit.php 和操作文件 editting.php edit.php代码:

 $('#submit').click(function(){  
      //if( this.value == "apl" )  
       var id = $("#inf_id").val();
       var text = $("#text").val();
       var title = $("#title").val();
      $("#imgLoad").show(); // Показываем прелоадер

      //setTimeout('$("#imgLoad").show()', 1000);
         $.ajax({  
                url: "editting.php",  
                type: "POST",
                data: {"inf_id": id,"title": title,"text":text},
                cache: false,  
               success: function(response){ 
               //////////////////////////// 
    alert(response);               
               //////////////////////////////
            if(response == 0){ // Смотрим ответ от сервера и выполняем соответствующее действие
                //alert("Больше нет записей");  
                $("#imgLoad").hide();
                $("#success_div").show();
                $("#alert_div").hide(); 
                $("#empty_infs_div").hide();                    
                setTimeout('$("#success_div").hide();', 2000);  

                $("#empty_text").hide();
                $("#empty_title").hide();                                   
            }else if(response == 1){
                $("#imgLoad").hide();
                $("#success_div").hide();
                $("#alert_div").show(); 
                $("#empty_infs_div").hide();
                setTimeout('$("#alert_div").hide();', 2000);    

                $("#empty_text").hide();
                $("#empty_title").hide();
            } /*else if(response == 2){
                $("#imgLoad").hide();
                $("#success_div").hide();
                $("#empty_infs_div").show();
                $("#alert_div").hide();                         
                setTimeout('$("#empty_infs_div").hide();', 2000);
            }*/

            else if(response == 2 || response == '2'){
                $("#empty_text").hide();
                $("#empty_title").show();

                $("#imgLoad").hide();
                $("#success_div").hide();
                $("#empty_infs_div").hide();
                $("#alert_div").hide(); 
                setTimeout('$("#empty_title").hide();', 2000);
                }
            else if(response == 3){ //if(response == 4)     
                $("#empty_text").show();
                $("#empty_title").hide();

                $("#imgLoad").hide();
                $("#success_div").hide();
                $("#empty_infs_div").hide();
                $("#alert_div").hide(); 
                setTimeout('$("#empty_text").hide();', 2000);
                }

            }//success  
            }); 

        });  

和editting.php:

                <?
            include("site_blocks/bd.php");
            if (isset($_REQUEST['inf_id'])) {$id = $_REQUEST['inf_id']; 
            if ($id == '') {unset($id);}}

            if (isset($_REQUEST['title'])){$title = $_REQUEST['title']; 
            if ($title == '') {unset($title);}}

            if (isset($_REQUEST['text']))  {$text = $_REQUEST['text']; 
            if ($text == '' || $text == '<br>' ) {unset($text);}}

            if (isset($title) && isset($text))
            {
                mysql_query('SET NAMES utf8');ob_clean();
                $update_infs = mysql_query ("UPDATE data SET title='$title',text='$text' WHERE id='$id'");      

                if($update_infs==1) {sleep(1); echo 0;}
                else {sleep(1); echo 1; }
            }

            else 
            {sleep(1);
            if (!isset($title)) {echo 2;}
            else if(!isset($text)) {echo 3;}
            }

            ?>

警报有效,显示结果 0、1、2、3。但是浏览器 Chrome 对这个数字没有反应。 Mozilla 的反应和我预期的一样。 任何人都可以帮助我,拜托)?非常感谢))

【问题讨论】:

  • 这不是错误,而是警告。它是由 jQuery 生成的,你可以忽略它。它不会影响您的代码。要让它消失,请更新 jquery。
  • 我建议你在Chrome控制台调试代码,一步一步执行,检查变量是否有你期望的值。

标签: javascript php jquery ajax google-chrome


【解决方案1】:

event.returnValue 已弃用。请使用标准 event.preventDefault()

只是一个警告(见here),它应该在chrome和firefox中工作! 如果它不能在 chrome 中工作,你应该检查你的代码: 例如:

setTimeout('$("#success_div").hide();', 2000); 

应该改为

setTimeout($("#success_div").hide(), 2000); 

setTimeout() 的第一个参数应该是一个函数(见here),而不是字符串

[编辑] 更正了剩余的分号

我用 jslint 检查了你的 js 代码,有 2 个主要错误,上面的一个是 setTimeout “隐含的 eval 是邪恶的。传递一个函数而不是一个字符串。”你的条件有一个错误

Expected '===' and instead saw '=='.
line 32 character 33:    } else if (response == 1) {

但这不应该使代码无法正常工作

【讨论】:

  • 您的第二个代码 sn-p 将立即隐藏,而不是 2 秒后。
  • 应该是setTimeout($("#success_div").hide, 2000);
  • 好吧 :D 忘了分号 - D`oh
猜你喜欢
  • 2013-12-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-14
  • 2022-08-07
  • 2014-12-25
  • 1970-01-01
  • 1970-01-01
  • 2016-06-13
相关资源
最近更新 更多