2017-04-05 89 views
-1

所以,我有一個HTML表單,我需要將它的值作爲參數發送到PHP函數,但我也需要一個不同的值,甚至不在裏面HTML。將2個或更多參數從HTML表單傳遞到PHP函數

例如:

<form action="methods.php" method="register"> 
    <input type="text" placeholder="EventID"> 
    <input type="submit" value="Register"> 
</form> 

這種形式會得到事件ID並把它作爲參數傳遞給註冊用戶到事件。但我需要發送用戶作爲參數(function register($user, $eventid)),我不知道如何這樣做。

我在這裏找到了一些類似的東西,但它們與POST和GET相關,我不確定它們是否適用於我,我無法理解如何使用它們,因此如果有人可以幫助我出去,pleaaaaaase,我會非常感激

+0

確實使用AJAX。但是,真的,有很多你在互聯網上詢問的例子。值在老學校表格提交中按名稱發送,您不應再使用...再使用AJAX。我所做過的每一次提交涉及POST或GET。 – PHPglue

+0

我無法找到一個我可以理解做什麼): 我從來沒有使用AJAX,但如果你相信它會工作,我會做一些谷歌搜索,並嘗試使用它,謝謝:D –

+0

這有點複雜。您可能想要使用jQuery ...但我會在下面向您展示一個原始示例。等一下。 – PHPglue

回答

0

查找的解釋在下面的評論:

//<![CDATA[ 
 
// external.js 
 
var post, doc, bod, htm, C, E, T; // for use on other loads 
 
addEventListener('load', function(){ // load 
 

 
// used in post function below to create String from Object 
 
function phpEncode(obj){ 
 
    var r = []; 
 
    if(obj instanceof Array){ 
 
    for(var i=0,l=obj.length; i<l; i++){ 
 
     r.push(phpEncode(obj[i])); 
 
    } 
 
    return '%5B'+r.join(',')+'%5D'; 
 
    } 
 
    else if(typeof obj === 'object' && obj){ 
 
    for(var i in obj){ 
 
     if(obj.hasOwnProperty(i)){ 
 
     var v = obj[i], s; 
 
     if(typeof v === 'object' && v){ 
 
      s = encodeURIComponent('"'+i.replace('"', '\\"')+'":')+phpEncode(v); 
 
     } 
 
     else{ 
 
      v = typeof v === 'string' ? '"'+v.replace('"', '\"')+'"' : v; 
 
      s = encodeURIComponent('"'+i.replace('"', '\\"')+'":'+v); 
 
     } 
 
     r.push(s); 
 
     } 
 
    } 
 
    return '%7B'+r.join(',')+'%7D'; 
 
    } 
 
    else{ 
 
    r = typeof obj === 'string' ? '"'+obj.replace('"', '\\"')+'"' : obj; 
 
    return ''+r; 
 
    } 
 
} 
 
// used in post function below to evaluate (make into code) JSON String that comes back from PHP 
 
function phpAccept(url){ 
 
    return eval('('+decodeURIComponent(url)+')'); 
 
} 
 
// here is an example of a post AJAX function 
 
post = function(send, where, success, context){ 
 
    var x = new XMLHttpRequest; 
 
    var c = context || this; 
 
    x.open('POST', where); x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 
 
    x.onreadystatechange = function(){ 
 
    if(x.readyState === 4 && x.status === 200){ 
 
     if(success)success.call(c, phpAccept(x.responseText)); 
 
    } 
 
    } 
 
    if(typeof send === 'object' && send && !(send instanceof Array)){ 
 
    var r = []; 
 
    for(var p in send){ 
 
     r.push(encodeURIComponent(p)+'='+phpEncode(send[p])); 
 
    } 
 
    x.send(r.join('&')); 
 
    } 
 
    else{ 
 
    throw new Error('send must be an Object'); 
 
    } 
 
    return x; 
 
} 
 
// yes, you can do this - just remember that non-primitive values are the actual Object through assingment 
 
doc = document; bod = doc.body; htm = doc.documentElement; 
 
// simple way to create an Element by tag 
 
C = function(tag){ 
 
    return doc.createElement(tag); 
 
} 
 
// simple way to document.getElementById() 
 
E = function(id){ 
 
    return doc.getElementById(id); 
 
} 
 
T = function(tag){ 
 
    return doc.getElementsByTagName(tag); 
 
} 
 
var form = E('form'), sub = E('sub'), i1 = E('i1'), i2 = E('i2'); 
 
// prevent old school submission 
 
form.addEventListener('submit', function(ev){ 
 
    ev.preventDefault(); // prevents submission 
 
}); 
 
// just for testing remove below 
 
var tS = E('test_out').style; 
 
// remove above 
 
// ajax submisson 
 
sub.addEventListener('click', function(){ 
 
    /* note that if the Elements are not removed from or added 
 
    to the DOM you don't need to get them again Element.value 
 
    will probably be different so you'll want to get them 
 
    on every click 
 
    */ 
 
    post({phpProp1:i1.value, phpProp2:i2.value}, 'yourPHPajaxResponsePage.php', function(data){ 
 
    /* before data comes back yourPHPajaxResponsePage.php may look like this: 
 
    <?php 
 
    session_start(); // super common - read up on it - not needed here - but won't hurt 
 
    if(isset($_POST['phpProp1'], $_POST['phpProp2'])){ 
 
     // usually you affect MySQL using PHP at this point 
 
     // we'll just send them back in this lame example 
 
     $res = array('jsProp1' => $_POST['phpProp1'], 'jsProp2' => $_POST['phpProp2']); 
 
     // makes results come back as JSON 
 
     echo json_encode($res); 
 
    } 
 
    ?> 
 
    */ 
 
    if(data){ // may want more conditions 
 
     E('out').innerHTML = data.jsProp1+'<br />'+data.jsProp2; 
 
    } 
 
    }, this); 
 
    // just for testing - remove below 
 
    tS.display = 'block'; 
 
    E('temp_res').innerHTML = i1.value+'<br />'+i2.value; 
 
    // remove above 
 
}); 
 
// testing only remove below 
 
var ins = doc.querySelectorAll('input[type=text]'); 
 
for(var i=0,l=ins.length; i<l; i++){ 
 
    ins[i].addEventListener('focus', function(){ 
 
    tS.display = 'none'; 
 
    }); 
 
} 
 
// remove above 
 
form.addEventListener('keydown', function(ev){ 
 
    // if user hits enter 
 
    if(ev.keyCode === 13)sub.click(); 
 
}); 
 

 
}); // end load 
 
//]]>
/* external.css */ 
 
html,body{ 
 
    padding:0; margin:0; 
 
} 
 
.main{ 
 
    width:980px; margin:0 auto; 
 
} 
 
#form{ 
 
    width:266px; color:#fff; background:green; padding:10px; 
 
} 
 
#form>div>label{ 
 
    display:block; float:left; width:57px; 
 
} 
 
#form>div>input{ 
 
    width:203px; 
 
} 
 
#form>div{ 
 
    margin-bottom:10px; 
 
} 
 
#form>#sub{ 
 
    display:block; margin:0 auto; 
 
} 
 
/* remove below - testing only */ 
 
#test_out{ 
 
    display:none; 
 
} 
 
#test_out>div:first-child{ 
 
    color:red; 
 
}
<!DOCTYPE html> 
 
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'> 
 
    <head> 
 
    <meta http-equiv='content-type' content='text/html;charset=utf-8' /> 
 
    <title>AJAX Example</title> 
 
    <link type='text/css' rel='stylesheet' href='external.css' /> 
 
    <script type='text/javascript' src='external.js'></script> 
 
    </head> 
 
<body> 
 
    <div class='main'> 
 
    <form id='form'> 
 
     <div><label for='i1'>Input 1</label><input id='i1' name='i1' type='text' value='' /></div> 
 
     <div><label for='i2'>Input 2</label><input id='i2' name='i2' type='text' value='' /></div> 
 
     <input id='sub' type='button' value='submit' /> 
 
    </form> 
 
    <div id='out'></div> 
 
    <!-- for testing remove below --> 
 
    <div id='test_out'><div>Must have PHPServer code in JavaScript Comments to get real results</div><div id='temp_res'></div></div> 
 
    <!-- remove above --> 
 
    </div> 
 
</body> 
 
</html>

你覺得呢?

+0

天哪,你在那裏做了很多編碼哈哈哈我真的很感謝你幫助我的時間 我會在週末看看它,以便採取適當的時間來分析它並理解它:D 我會讓我知道如果設法使它工作 非常感謝你^^ –

+0

如果你是新手,它可能需要你花一段時間來圍繞這個東西。如果你是新手,你可能會忽略'phpEncode',直到你認爲你已經準備好進行遞歸。 – PHPglue

0

它非常簡單,你只需要照顧幾件事情。

1:每個輸入字段都應該有一個名稱。

2:設置形式方法是GET(送在url可見值)或POST

3(以不顯示在URL發送數據):如果通過GET發送然後methods.php接收形式的數據$ _GET [ 'INPUT_FIELD_NAME']或通過POST然後$ _POST [ 'INPUT_FIELD_NAME']

+0

事情是,我沒有用戶作爲字段,只有eventId –

0

您可以使用隱藏字段,或者如果您使用cookie或會話,那麼你可以使用會話或cookie的用戶

<form action="methods.php" method="post"> 
    <input type="hidden" name="txtuser" value="abc"> 
    <input type="text" placeholder="EventID"> 
    <input type="submit" value="Register"> 
</form> 

不需要將它作爲參數傳遞給全局變量,因此您可以訪問其v直接在任何頁面上顯示,你只需要存儲它的價值並在你項目的任何地方訪問它。

+0

我現在實際上要使用cookie,但無論如何,我不知道ow從那裏獲取用戶並將其作爲參數傳遞給if –

+0

if你使用cookie或會話,那麼不需要將它作爲參數傳遞給它的全局變量,這樣你就可以直接在任何頁面訪問它的值,你只需要存儲它的價值並訪問它在項目中的任何地方。 –

相關問題