JQuery. Ajax yöntem = "post"

3 Cevap php
$.ajax({
    method: "post"
    , url: "save.php"
    , data: "id=453&action=test" 
    , beforeSend: function(){

    } 
    , complete: function(){ 
    }  
    , success: function(html){ 
        $("#mydiv").append(html);        
    }
});

Ben yazı olarak yöntem türü ayarlayın ama Save.php ben sadece değerleri $ _POST in $ _GET veya $ _REQUEST ama değil ya olsun.

Benim formu gibi görünüyor

<form method="post" id="myform" action="save.php">

Bu çalışma değildi, burada etrafına baktı ve Google, EncType ekleme çalıştı

<form method="post" id="myform" action="save.php" enctype="application/x-www-form-urlencoded">

ama yine de $ _POST boş?

Nasıl bu çalışma yapabilirim? Teşekkürler.

3 Cevap

Yerine method: "post" kullanmak gerekir type: "POST"

Yani bu form HTML herhangi bir değişiklik yapmadan çalışması gerekir:

$.ajax({
    type: "POST"
    , url: "save.php"
    , data: "id=453&action=test" 
    , beforeSend: function(){

    } 
    , complete: function(){ 
    }  
    , success: function(html){ 
        $("#mydiv").append(html);        
    }
});

Emin çalışmıyor ama bu benim için çalışıyor neden:

save.php

<?php
print_r($_POST);

file.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <title>Example</title>

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <script type="text/javascript">
    	$(function() {
    		$('input').click(function() {
    			$.ajax({
    				type: "POST"
    				, url: "save.php"
    				, data: "id=453&action=test" 
    				, beforeSend: function(){

    				} 
    				, complete: function(){ 
    				}  
    				, success: function(html){ 
    					alert(html);        
    				}
    			});
    		});
    	});
    </script>
</head>

<body>
    <div id="main"><input type="button" value="Click me"></div>
</body>
</html>

Sizin hata başka bir yerde durmalıdır.

Neden jQuery.post() , doğrudan aramak değil mi?

$.post("save.php",
  $("#myform").serialize(),
  function(html) { 
    $("#mydiv").append(html);        
  },
  "html"
);

jQuery.ajax() , changing to type: "POST" yerine ilişkin olarak method: "POST" uygun bir POST isteği neden olur:

$.ajax({
        type: "POST",
        url: "test.mhtml",
        data: $("#myform").serialize(),
        success: function(html){ 
                $('#mydiv').html(html);
        }
});

Bu gibi Apache günlükleri gösterir:

::1 - - - [30/Oct/2009:09:44:42 -0700] "POST /test.php HTTP/1.1" 200 9 "http://localhost:10501/test.mhtml" "(sic)"

Possible alternate issue:
I found this question on StackOverflow while looking around at your problem. Maybe it isn't the jQuery which is giving you trouble, it is PHP? The top voted answer has some suggestions for ensuring that PHP isn't interfering, and the second highest answer offers some code to see if the request is actually a POST or not:

<?php
  if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    echo 'POSTed';
  }
?>

Ben de karışımı kaybolmadan değişkenler ile sorun yaşıyorsanız ve dışarıdan yönlendirmek için Reyazmak Şartları kullanırken dir/foo.php to dir/foo apache hep birlikte ve yönlendirme sonrası isteği bırakarak olduğu keşfedildi.

javascript yazarken o yüzden herhangi bir harici yönlendirmelerde atlayabilir bir şekilde dosya başvurmalıdır.

örn. javascript ile uzantı adı inline bırakın

yazmak

url: "dir/foo"

yerine

url: "dir/foo.php"

Bu benim gibi bu sayfa bulundu başkalarına yardımcı olur umarım.