2016-04-06 77 views
0

我很新的PHP & AJAX。我在HTML中有兩個提交按鈕,我使用ajax serialize()向/從PHP文件中傳遞/提取一些值,或者說ajax。問題在於serialize()無法區分使用哪個按鈕,「拒絕」按鈕或正在創建PHP文件問題的「接受」按鈕,因爲它既不處理接受按鈕也不處理拒絕按鈕。多個提交按鈕,Ajax和PHP沒有處理

最後,我的主要目的是爲了一些數據添加到數據庫,當用戶打的accept按鈕 &從數據庫中刪除一些數據,如果用戶點擊拒絕按鈕但使用Ajax。

HTML

<button class="p" type="submit" value="accept"></button> 
<button class="p" type="submit" value="reject"></button> 

PHP

if($_SERVER["REQUEST_METHOD"] == "POST"){ 
    if(isset($_POST["accept"]){ 
     // doSomething 
    }else if(isset($_POST["reject"]){ 
     // doSomethingElse 
    } 
} 
... 
... 
... 

阿賈克斯(這不是完整的代碼,只需要有基本的想法)

var form = $d('#formName'); 

$('.p').click(function(){ 

    var formData = $d(form).serialize(); 

    $d.ajax({ 
     type: 'POST', 
     url: $d(form).attr('action'), 
     data: formData 
    }) 

    .done(function(response){ 
     window.location.reload(true); 
    }) 
}); 
+1

您將需要賦予'submit'一個'name'屬性。 – frz3993

+0

我向個人添加了'name ='接受''&'姓名=「拒絕」',但仍然相同。它不像上面那樣處理PHP。 @ frz3993 –

+0

這可能不工作,因爲你重新發送bove輸入字段,嘗試將它們放在不同的表單標籤中,然後發送 –

回答

0

你需要給你的submit一個name屬性。例如:

<button class="p" name="action" type="submit" value="accept"></button> 
<button class="p" name="action" type="submit" value="reject"></button> 

而且你的PHP代碼可以action.Example檢查$_POST值:

if($_POST["action"] == 'accept'){ 
    // doSomething 
}else if($_POST["action"] == 'reject'){ 
    // doSomethingElse 
} 
+0

與我的Ajax相同和如下: '$ d(form).submit(function(五){ \t \t e.preventDefault(); \t \t //序列化形式的數據 \t \t變種FORMDATA = $ d(形式).serialize(); \t \t // Submiting形式 \t \t $ d.ajax({\t類型: 'POST', \t \t \t URL:$ d(形式).attr( '動作'), \t \t \t數據:FORMDATA \t \t}) \t \t //使用.done方法 \t \t.done(function(response){ \t \t \t window.location。重新加載(真); \t \t}) \t}); ' 沒有比這更好的了,只有頁面因'.done()'重新加載,但PHP沒有被處理。 –

+0

我錯過了你使用ajax,我會編輯我的答案。 – frz3993

+0

@KumarDeepak,請參閱有關如何將提交參數添加到查詢字符串的其他答案。 – frz3993

0

提交按鈕是不會被序列化,你可以從他們手動獲取數據。
還要確保按鈕具有名稱屬性。

$('.p').click(function(e){ 
    e.preventDefault(); 
    var formData = $(this).attr('name') + '=' + encodeURIComponent(this.value) + '&' + $d(form).serialize(); 

    $d.ajax({ 
     type: 'POST', 
     url: $d(form).attr('action'), 
     data: formData 
    }) 

    .done(function(response){ 
     window.location.reload(true); 
    }); 
}); 
+0

thanx回覆,我不明白爲什麼?但'this.name'給出了一些未定義的變量錯誤。你能幫忙嗎? @Musa –

+0

試試用''(this).attr('name')'代替 – Musa

+0

對不起,現在它說'意外的標記:名稱(encodeURIComponent)' 請幫助解決它是非常重要的。 @Musa –