2016-07-03 64 views
0

我完全困惑:jquery Ajax張貼但未收到?

這是我的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變量。

$(".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沒有收到$ _ POST細節?我錯過了什麼?

+0

您的帖子字段是'info'和'info2'不是'cred'或者'id' –

回答

0

您不必手動序列化一樣,

$('.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); 
    }); 
}); 

對事物的PHP方面的數據,請確保您正在閱讀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。這將jQuery的數據更改爲這

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

然後確保你的PHP

+0

「OreoCookie」,這個布魯斯好吃嗎? –

+0

@Dagon奧利奧餅乾相當不錯,你不同意嗎? – naomik

+0

在我的世界部分不是很出名 –

0

使用閱讀$_POST['id']$_POST['cred']以下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