2017-08-04 53 views
1

我需要從我的表單傳遞一個值到我的PHP在同一頁。這可能不是一個選項,可以創建另一個.php文件並將代碼放在那裏,因爲有很多事情正在進行。 這是我需要修復的代碼的一部分,目前它只在代碼位於另一個文件時才起作用,因爲$ _POST不會與代碼的其他部分混淆。具體而言,我需要設法將「客戶端」或「empre」從表單單獨傳遞到php。表單提交只有一個值與AJAX傳遞到PHP在同一頁面

HTML

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/ 
libs/jquery/1.3.0/jquery.min.js"> 
</script> 
<script type="text/javascript" > 

$(function() { 

if($(".cliente").click(function() { 

    var name = $("#client").val(); 
    var dataString = 'client='+ name; 

}))else if($(".empresa").click(function() { 

    var name = $("#empre").val(); 
    var dataString = 'empre='+ name; 
})); 

$.ajax({ 
    type: "POST", 
    data: dataString}); 
}); 
</script> 
</head> 
<body> 
<form> 
    <input name="client" type="text"><br> 
    <input class="cliente" type="submit" value="Buscar cliente"/><br> 
    <input name="empre" type="text"><br> 
    <input class="empresa" type="submit" value="Buscar empresa"/><br> 
    </form> 

    //PHP HERE 

    //HTML AGAIN 
    </body> 
</html> 

PHP(同一個頁面,只是分離了可讀性)

if(isset($_POST['empre'])){ 

     //DB QUERY 
    } 
    elseif(isset($_POST['client'])){ 

     //DB QUERY 

    }  
+0

你'$ .ajax'是無效的。它缺少'url','data'應該是'data:{data:someValue}' –

+0

將輸入類型=「提交」更改爲輸入類型=「按鈕」,否則表單將以GET方式提交。 – Adder

+0

@MilanChheda我可以在url中放置同一頁嗎?我想,如果沒有網址,默認情況下會是我的。 – JuanjoC

回答

0

爲什麼不使用單獨的形式對數據進行處理? (提到你的PHP邏輯將與此提出的解決方案工作)

$(function() { 
 
    $(".cliente").click(function(e) { 
 
    e.preventDefault(); 
 
    alert('Going to post data for client, check the console log now'); 
 
    $.ajax({ 
 
    \t url: $('form[name="client"]').attr('action'), 
 
     type: "POST", 
 
     data: $('form[name="client"]').serialize(), 
 
     success: function(data){ 
 
     \t console.log(data); 
 
     }, 
 
     failure: function(error){} 
 
    }); 
 
    }); 
 
    $(".empresa").click(function(e) { 
 
    e.preventDefault(); 
 
    alert('Going to post data for empre, check the console log now'); 
 
    $.ajax({ 
 
    \t url: $('form[name="empre"]').attr('action'), 
 
     type: "POST", 
 
     data: $('form[name="empre"]').serialize(), 
 
     success: function(data){ 
 
     \t console.log(data); 
 
     }, 
 
     failure: function(error){} 
 
    }); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<form name="client" action="https://someurl.com/fileto.php"> 
 
    <input name="client" type="text" value="some value"><br> 
 
    <input class="cliente" type="submit" value="Buscar cliente"/> 
 
</form> 
 
<form name="empre" action="https://someurl.com/fileto.php"> 
 
    <input name="empre" type="text" value="some value"><br> 
 
    <input class="empresa" type="submit" value="Buscar empresa"/> 
 
</form>

+0

爲什麼要使用分開的爲什麼你可以合併?請解釋分離它們的原因。 –

+0

我無法讓它工作......當我點擊客戶端提交時,它什麼都不做。 url更改爲:http:// url?client = 8 – JuanjoC

+0

您可能需要設置自己的URL @JuanjoC,我只是以此爲例,因爲您的原始發佈代碼在語法上不正確。 –

0

您可以結合在同一個AJAX調用如下發送,並在PHP中,你可以這樣做:

$parameters = json_decode($_POST['params']); 

$parameters將具有在該AJAX調用中發送的所有變量。

我會建議,不要爲您的AJAX使用相同的頁面。你應該把它保存在單獨的文件中。這將使代碼更清潔,更輕,可讀和易於調整。

$(function() { 
 
    $(".cliente, .empresa").click(function(e) { 
 
    e.preventDefault(); 
 
    var paramsToSend = {}; 
 
    if ($(this).hasClass('client')) 
 
     paramsToSend['client'] = $('form[name="client"]').serialize(); 
 
    else 
 
     paramsToSend['empre'] = $('form[name="client"]').serialize() 
 
    $.ajax({ 
 
     url: 'index.php' //assuming this is index.php (same page) 
 
     type: "POST", 
 
     data: { 
 
     params: JSON.stringify(paramsToSend) 
 
     }, 
 
     success: function(data) {}, 
 
     failure: function(error) {} 
 
    }); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form name="client"> 
 
    <input name="client" type="text" value="some value"><br> 
 
    <input class="cliente" type="submit" value="Buscar cliente" /> 
 
</form> 
 
<form name="empre"> 
 
    <input name="empre" type="text" value="some value"><br> 
 
    <input class="empresa" type="submit" value="Buscar empresa" /> 
 
</form> 
 

 
//PHP HERE //HTML AGAIN

+0

我收到了:「通知:未定義的索引:params」。似乎沒有達到PHP。 – JuanjoC

+0

你檢查了控制檯嗎?它有AJAX請求和有效載荷嗎? –

+0

是的,我沒有控制檯日誌,它試圖連接到Ajax,但它沒有得到任何迴應,我想。有人在評論中說可能無法實現我在找的東西,所以也許這就是爲什麼。 – JuanjoC

相關問題