2011-08-25 35 views
6

Tôi gặp sự cố khi tôi gửi biểu mẫu liên hệ qua Ajax tới tập lệnh PHP. Tôi đã sử dụng chức năng jQuery/Ajax trước đây cũng như tập lệnh liên hệ, tuy nhiên trong quá trình này, quá trình chạy theo yêu cầu ajax và sau đó trả về lỗi: chuỗi rỗng.Lỗi biểu mẫu AJAX của jQuery. Chuỗi rỗng

$(document).ready(function(){ 
    jQuery("#sendmail").click(function(){ 
     var name = $("#name").val(); 
     var phone = $("#phone").val(); 
     var email = $("#email").val(); 
     var text = $("#message").val(); 

     //var datastr ='name=' + name + '&mail=' + mail + '&subject=' + subject + '&text=' + text; 
     var datastr ='name=' + name + '&phone=' + phone + '&email=' + email + '&text=' + text; 
     $("#form-div").css("float", "left"); 
     $("#form-div").html("<p>Thank you for contacting Stillframe Photography.</p><p>Please wait for just a few moments while your enquiry is being sent.</p>"); 
     $("#form-div").fadeIn("slow"); 

     alert(datastr); 

     jQuery.ajax({ 
      type: "POST", 
      url: "contact.script.php", 
      data: datastr, 
      success: function(html){ 
      $("#response").fadeIn("slow"); 
      $("#response").html(html); 
      //setTimeout('$("#response").fadeOut("slow")',2000); 
      } 
      ,error: function (XMLHttpRequest, textStatus, errorThrown) { 
           $("#response").html('there was an error'); 
          console.log('error thrown'); 
          console.log(errorThrown); 
      } 
     }); 
    }); 
}); 

Bạn có thể xem trang đi vào hoạt động tại http://www.stillframe.com.au/test.php và bạn sẽ nhìn thấy hình thức nếu không có sự truyền thông trang tại tại liên kết cùng trên nhưng test2.php

Tôi cũng đã thêm các kịch bản mà không cần bất kỳ khác jQuery cùng url nhưng test3.php gửi trực tiếp tới tập lệnh PHP liên hệ để xác nhận không có lỗi trong tập lệnh đó.

SOLVED: Đã xóa thẻ href cơ sở khỏi đầu và tập lệnh hiện hoạt động tốt.

+0

bạn đã cố gắng tạo URL chứa dữ liệu và xóa dòng 'dữ liệu' chưa? url: 'contact.script.php? Name =' + name + '& phone =' + phone + '& email =' + email + '& text =' + văn bản, –

+0

Im không nhận được lỗi trên test2.php có vẻ như làm việc? –

+0

Cảm ơn James. Trong bài kiểm tra 2, bạn có nhận được phản hồi 'Cảm ơn bạn đã liên lạc' hay bạn nhận được phản hồi 'Đã xảy ra lỗi'? –

Trả lời

-4

Tốt hơn nên sử dụng ajax với javascript thô vì các lý do sau.

  1. Mã rất đơn giản và ngắn gọn.
  2. Bạn sẽ không bao giờ kết thúc với bất kỳ lỗi nào.
  3. Bạn nhắm mục tiêu chỉ để gửi các biến từ javascript sang php trong phần còn lại chính xác sẽ được giải quyết, hãy thêm một mã mẫu bên dưới cho bạn.

    function insert(){ 
    if(window.XMLHttpRequest) 
    { 
        xmlhttp = new window.XMLHttpRequest(); 
    } 
    else 
    { 
        xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); 
    } 
    
    xmlhttp.onreadystatechange = function() { 
        if(xmlhttp.readyState == '4' && xmlhttp.status == '200') 
        { 
         document.getElementById('msg').innerHTML = xmlhttp.responseText;  
        } 
    } 
    
    name = document.getElementById('insert').value; 
    
    parameters = 'insert=' + name; 
    
    xmlhttp.open('POST', 'day3.include.php', true); 
    xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 
    xmlhttp.send(parameters); 
    

    }

Trong các thông số vượt qua tất cả các biến của bạn cho phù hợp và tạo ra một div # msg để hiển thị các trả lời từ php.

Nếu bạn có bất kỳ sự nhầm lẫn hỏi tôi lại http://www.thetutlage.com

+5

-1. Bạn sẽ "KHÔNG BAO GIỜ" kết thúc với một lỗi? Có thật không? Tôi chắc rằng tôi có thể tìm ra cách. Câu trả lời của bạn là sở thích thuần túy, và nó không giải quyết vấn đề của OP theo cách mà HE đã lập trình. – bpeterson76

8

Thay vì sử dụng lĩnh vực của trường, sử dụng MẪU ID <form id="myform"> và serialize nó. Hãy thử điều này:

$(document).ready(function(){ 
    jQuery("#sendmail").click(function(){ 
     jQuery.ajax({ 
      type: "POST", 
      url: "contact.script.php", 
      data: $('#myform').serialize(), 
      cache: false, 
      success: function(output) { 
       $("#form-div").css("float", "left"); 
       $("#form-div").html("<p>Thank you for contacting Stillframe Photography.</p><p>Please wait for just a few moments while your enquiry is being sent.</p>"); 
       $("#form-div").fadeIn("slow"); 
       $("#response").html(output); 
       $("#response").fadeIn("slow"); 
       //setTimeout('$("#response").fadeOut("slow")',2000); 
      }, 
      error: function (XMLHttpRequest, textStatus, errorThrown) { 
           $("#response").html('there was an error'); 
          console.log('error thrown'); 
          console.log(errorThrown); 
      } 
     }); 
    }); 
}); 
+0

Cảm ơn sự giúp đỡ của bạn. Tập lệnh này đã tạo ra nhiều lỗi ngoại lệ. –

+1

loại lỗi nào? họ là ai? –

Các vấn đề liên quan