2016-07-03 2 views
0

私は完全に混乱しています:jquery Ajax POSTは投稿されましたが受信されませんでしたか?

これは私のPHPスクリプト "add_credits.php"です。私がフォームを作成し、method = "post"を使って呼び出すと完全に動作します。

$stmt = "UPDATE sites SET credits=:credits WHERE id=:id"; 
$stmt = $db->prepare($stmt); 
$stmt ->execute(array(":credits" => $_POST['cred'], ":id" => $_POST['id'])); 

これは、jquery/ajaxをトリガーする入力フィールドです。

<input id="<?php echo $row['id']; ?>" type="text" class="credits" value="<?php echo $row['credits']; ?>" /> 

これは私のjqueryです。成功すると警告ボックスに変数eittherが正しく表示されます。 PHPは$ _POSTの詳細を受信して​​いないかのように

$(".credits").bind('input', function() { 
      var add_id = $(this).attr("id"); 
      var info = 'id=' + add_id;     
      var add_cred = $(this).attr("value"); 
      var info2 = 'cred=' + add_cred; 
       $.ajax({ 
        type : "POST", 
        url : "add_credits.php", //add credits on enter php script 
        data : {info:info, info2:info2}, 
        success : function() { 
         alert(info2); 
        } 
       }); 
      return true; 
}); 

は、なぜそれがその報告の成功は、まだUPDATEが実行されていないされていること?私は何かを逃している?あなたが手動で物事のPHP側ではその

$('.credits').on('input', function() { 
    var req = $.post('add_credits.php', { 
    info: $(this).attr('id'), 
    info2: $(this).attr('value') 
    }); 
    req.done(function(res) { 
    console.log(res); 
    }); 
    req.fail(function(err) { 
    console.error(err); 
    }); 
}); 

などのデータをシリアル化する必要はありません

+0

あなたのポストフィールドがあるが、 'info'をし、 'info2'は' cred'でも 'id'でもない –

答えて

0

、あなたはあなたがinfoinfo2

// info and info2 were set in the POST request in the jQuery above 
$info = $_POST['info']; 
$info2 = $_POST['info2']; 

do_something($info, $info2); 

// respond in some way 
header('content-type: application/json'); 
echo json_encode(['ok'=> true]); 

を読んでいることを確認してくださいフィールド名をidcredにすることができます。それは次にあなたがPHP

+0

「OreoCookie」はおいしいブルースですか? –

+0

@Dagonオレオクッキーはかなり良いですが、同意しないのですか? – naomik

+0

私の世界ではよく知られていません –

0

使用中の次のjQueryコード$_POST['id']$_POST['cred']を読んで確認してください。この

var req = $.post('url', { 
    id: $(this).attr('id'), 
    cred: $(this).attr('value') 
}); 

にjQueryのデータを変更します

$(".credits").bind('input', function() { 
      var add_id = $(this).attr("id"); 
      var info = add_id;     
      var add_cred = $(this).attr("value"); 
      var info2 = add_cred; 
       $.ajax({ 
        type : "POST", 
        url : "add_credits.php", //add credits on enter php script 
        data : {id:info, cred:info2}, 
        success : function() { 
         alert(info2); 
        } 
       }); 
      return true; 
}); 
+1

なぜですか? –

+0

あなたは$ _POSTに 'id'と 'cred'を期待しているので、AJAX呼び出しから、 'info'と 'info2'の中にそれらをラップするのではなく、対応する変数を送るべきです。 – us190190

関連する問題