2012-08-08 53 views
0

执行$.getJSON()时调用的页面每次调用脚本时(当用户单击链接/按钮时)都会执行它的工作,但函数关联它不会做任何事情! 这是Script.php文件中:

$('a.addCategorie').click(function (e) 
    { 

     e.preventDefault(); 
     var dialog='<div id="Dialog_AddCategory">\ 
     <div id="tableContainer">\ 
     <table class="categoryTable">\ 
     <thead>\ 
     <tr>\ 
     <th>Ordre</th>\ 
     <th>Catégorie</th>\ 
     <th> </th>\ 
     </tr>\ 
     </thead>\ 
     <tbody>\ 
     <?php 
      $sql="SELECT nom, ordre FROM category ORDER BY ordre"; 
      $result=mysql_query($sql); 
      while($row=mysql_fetch_array($result)) 
      { 
       echo "<tr>"; 
       echo "<td>". $row['ordre'] ."</td>"; 
       echo "<td>". utf8_decode($row['nom']) ."</td>"; 
       echo "<td id=\"" . $row['ordre'] . "\" class=\"deleteCat\"></td>"; 
       echo "</tr>\\\n"; 
      } 
     ?> 
     </tbody>\ 
     </table></div>\ 
     <div id="addCategorie_Form">\ 
     <form>\ 
     <label for="nomCategorie">Nom de la catégorie</label>\ 
     <input type="text" name="nomCategorie" id="nomCategorie"/>\ 
     <label for="ordreCategorie">Ordre</label>\ 
     <input type="text" name="ordreCategorie" id="ordreCategorie"/>\ 
     </form>\ 
     </div></div>'; 
     $('body').append(dialog); 
$('#Dialog_AddCategory').dialog({ 
       autoOpen: false, 
       modal: true, 
       width: 800, 
       height: 400, 
       open: function(even, ui) { $(".ui-dialog-titlebar-close", ui.dialog).css("visibility","hidden");}, 
       title: "Nouvelle catégorie", 
       resizable: false, 
       hide:'slide', 
       show:'slide', 
       buttons: 
       { 
        "Créer la catégorie":function() 
        { 
         var ok = true; 
         if(isNaN($('#ordreCategorie').val()) || $('#ordreCategorie').val().length < 1) 
         { 
          ok = false; 
          $('#ordreCategorie').css("background-color","#F00"); 
         } 
         else 
         { 
          $('#ordreCategorie').css("background-color","#CF0"); 
         } 
         if($('#nomCategorie').val().length< 3) 
         { 
          ok = false; 
          $('#nomCategorie').css("background-color","#F00"); 
         } 
         else 
         { 
          $('#nomCategorie').css("background-color","#CF0"); 
         } 

         if(ok) 
         { 
          var ordre = $('#ordreCategorie').val(); 
          var nom = $('#nomCategorie').val(); 
          $.getJSON('addCategory.php', {'ordre':ordre,'nom':nom}, function(data) 
          { 
           console.log("THIS LOG WON'T APPEAR AND THE CODE WON'T EXECUTE."); 
           if(data.result === "false") 
           { 
            $('div id="Dialog_Feedback">Une catégorie porte déjà ce nom ou cet ordre!</div>').dialog(
            { 
             autoOpen:false, 
             title:'Une erreur est survenue!', 
             width:200, 
             height:'auto', 
             resizable: false, 
             modal:true, 
             buttons: 
             { 
              "OK" : function() 
              { 
               $(this).remove(); 
              } 
             } 
            }); 
           } 
           else 
           { 
            $('<div id="Dialog_Feedback">L\'ajout a été effectué avec succès!</div>').dialog({ 
             autoOpen:false, 
             title:'Catégorie ajoutée!', 
             width:400, 
             height:'auto', 
             resizable:false, 
             modal:true, 
             buttons:{ 
              "Ok": function() 
              { 
               $(this).remove(); 
               window.location.reload(); 
              } 
             } 
            });         
           } 
           $('#Dialog_Feedback').dialog("open"); 
          }); 
         } 
        }, 
        "Annuler":function() 
        { 
         $(this).remove(); 
        } 
       } 
     }); 

这里是addCategory.php页:

<?php 
include('../../anything.php'); 
$nom = $_GET['nom']; 
$ordre = $_GET['ordre']; 
$sql = "SELECT ordre, nom FROM category"; 
$checking = mysql_query($sql); 
$ok = true; 
while ($row=mysql_fetch_array($checking)) 
{ 
    echo "test"; 
    if((strtolower($nom) === strtolower($row['nom'])) || ($ordre === $row['ordre'])) 
    { 
     $ok = false; 
    } 
} 
if ($ok) 
{ 
    $sql = "INSERT INTO category (nom,ordre) VALUES('$nom',$ordre)"; 
    $result = mysql_query($sql); 
    mysql_close($connexion); 
    echo json_encode(array("result"=>"true")); 
} 
else 
{ 
    echo json_encode(array("result"=>"false")); 
} 
?> 

任何人有什么可能会导致这种想法?我已经检查了在GET中发送的两个变量,它们包含了一些东西。

我的PHP页面返回JSON编码的结果是这样的:

echo json_encode(array("result"=>"true"));

谢谢大家对您的时间。

编辑:我忘了提, Chrome检查和萤火不会在整个脚本执行报告任何错误。 console.log()部分也不会出现,这意味着PHP页面中的命令被执行,但$.get()中包含的JavaScript函数未被触发。

编辑2:我也尝试将echo调用更改为echo true;return true;

EDIT3:我能看到Chrome检查和萤火虫的网络选项卡PHP页面的结果:{"result":"false"}array(1) { ["result"]=> string(5) "false" } 这表明,问题将驻留到$.getJSON()来电!但一切似乎都对我很好!

+0

使用Firebug检查来自服务器的实际响应。 – jeff 2012-08-08 16:05:38

+2

是来自与网页相同的“Origin”的回应吗? – Alnitak 2012-08-08 16:06:03

+0

PHP脚本错误了吗?浏览器的JavaScript控制台中是否显示任何内容? – 2012-08-08 16:07:33

回答

1

如果您传递无效的JSON到$.getJSON,成功回调将不会被触发。正如你在编辑中提到的那样,你得到的答复如{"result":"false"}array(1) { ["result"]=> string(5) "false" },这肯定是无效的JSON。

纠正您的脚本生成有效的JSON,你应该很好去!

+0

再次谢谢您,先生!这可能比我自己更有用! – 2012-08-09 01:15:59

相关问题