2011-07-06 54 views
1

我有一個插入和加載記錄(jQuery & PHP)腳本工作正常,無需使用AJAX。但在AJAX調用之後,插入(jQuery)不起作用。Ajax調用不工作後使用jQuery插入記錄

這是我的代碼: -

 
    $(".insert").live("click",function() { 

     var boxval = $("#content").val(); 
     var dataString = 'content='+ boxval; 
     if(boxval==''){ 
      alert("Please Enter Some Text"); 
     } 
     else{ 
      $.ajax({ 
       type: "POST", 
       url: "demo.php", 
       data: dataString, 
       cache: false, 
       success: function(html){ 
        $("table#update tbody").prepend(html); 
        $("table#update tbody tr").slideDown("slow"); 
        document.getElementById('content').value=''; 
       } 
      }); 
     } 
     return false; 
    }); 

    $(".load").live("click",function() { 
     $.ajax({ 
       type: "POST", 
       url: "test.php", 
       success: function(msg){ 
        $("#container").ajaxComplete(function(event, request, settings){ 
         $("#container").html(msg); 
        }); 
       } 
      }); 
    }); 
}); 
+0

使用螢火蟲檢查您的請求正在發生什麼。 –

+0

在我使用json的jQuery AJAX腳本中,我們必須指定像$(。#input1')。val();等字段的ID。所以jQuery知道它提交的是什麼。這將在指定緩存屬性後進入AJAX調用。我現在沒有工作代碼,但如果你以後仍然卡住,我可以發佈我擁有的代碼。 – Ryan

+0

感謝您的回覆, 在螢火蟲響應是 名 這是確定 – Zoran

回答

0

絕對推薦使用的瀏覽器開發工具以檢查提交的確切要求,看看是否有是有問題第一。

您可能還想更改將數據串傳遞給ajax請求的方式。

如果你的boxval中有一個「&」,那麼你最終會得到一個格式不正確的字符串。因此,請嘗試將數據初始化爲:

var data = {}; 
data.content = boxval; 

這會要求jQuery爲您轉義值。

0

我很想看看你的表單標記和你的後端PHP代碼;它可能會提供一個線索。

通常我會有一個名爲'action'的表單變量,只是爲了告訴PHP代碼我想要它做什麼(特別是如果PHP腳本是對象的許多不同操作的控制器)。像<input type="hidden" name="action" value="insert"/>或甚至多個<input type="submit" name="action"/>按鈕,每個按鈕都有不同的值。在PHP代碼中,我會碰到這樣的:

switch ($_POST['action']) { 
    case 'insert': 
     // insert record and send HTML 
    break; 
    // other actions 
} 

如果你做了這樣的事情,也許是PHP正在尋找不存在的變量的存在。

無法查看您的代碼,我強烈建議使用非常方便的jQuery表單插件http://jquery.malsup.com/form/。它允許您將表單轉換爲AJAX表單,正確格式化數據,並且不會忘記任何表單元素的數據(除非未點擊的<input type="submit"/>按鈕,這與非 - AJAX表格展品)。它的工作方式與標準$.ajax()方法類似。

0

我解決

我換成這個代碼

 
$("#container").ajaxComplete(function(event, request, settings){ 
    $("#container").html(msg); 
}); 

問題
 
$("#container").html(msg); 

非常感謝你對你的答案

0
<!-- 
To change this template, choose Tools | Templates 
and open the template in the editor. 
--> 
<!DOCTYPE html> 
<html> 
    <head> 
     <title></title> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> 

<script type="text/javascript"> 
      $(document).ready(function() { 
    $('.clicker').click(function(){ 
     var fname = $('.fname').val(); 
     var lname = $('.lname').val(); 
    var message=$('.message').val(); 
    $.ajax({ 
    type:"POST", 
    url: "submit.php", 
    cache:false, 
    data: "fname="+fname+"&lname="+lname+"&message="+message, 
    success: function(data){ 
      $(".result").empty(); 
      $(".result").html(data); 
     } 
    }); 
    return(false); 
     }); 
    }); 
     </script> 
    </head> 
    <body> 
     <div>Data Form</div> 
     <form id="form1" name="form1" method="post" action=""> 
    <input name="fname" type="text" class="fname" size="20"/><br /> 
    <input name="lname" type="text" class="lname" size="20"/><br /> 
    <div class="result"><textarea name="message" rows="10" cols="50" class="message"> </textarea></div> 
     <input type="button" value="calculate" class="clicker" /> 
    </form> 
    </body> 
</html> 

submit.php

<?php 
$con=mysql_connect("localhost","root",""); 
mysql_select_db("ajaxdb",$con); 

$fname=$_REQUEST['fname']; 
$lname=$_REQUEST['lname']; 
$message=$_REQUEST['message']; 

$sql="insert into person(fname,lname,message) values('$fname','$lname','$message')"; 
mysql_query($sql) or die(mysql_error()); 

echo "The data has been submitted successfully."; 
?>