[英]How to change two variables value in PHP from a JavaScript onChange event
我有一個包含以下變量的表單:
$amt and $f
$a1 and $f1
$a2 and $f2
$a3 and $f3
$a4 and $f4
$amt and $a are input numbers, while $f are label text
<input id="a1" name="a1" type="text" value="<?php echo $a1; ?>" onChange="????, document.e.submit();" />
(the same to a2, a3, and a4)
我想做的是onChange,我需要替換$ amt和$ f。
$ amt = $ a1(用戶輸入新值)$ f = $ f1
我怎樣才能做到這一點?
PHP變量和javascript是兩件事。
PHP是服務器端,javascript是客戶端(瀏覽器)。
如果您只想在本地交換數據(沒有解釋為什么需要交換變量,以便我只能假設事情),建議您聲明用php變量初始化的Javascript變量。
您需要知道的是,您使用php生成具有各種變量的頁面(包含html / css和javascript)。 它生成文本。 因此,PHP變量與生成的輸出之間沒有鏈接。
您可以使用ajax從服務器獲取新的變量值,並使用javascript來完成所需的操作。
您將需要為此使用AJAX
因為您需要在后端對其進行處理。 假設您使用的是純JavaScript而不是庫,則需要按照以下步驟進行操作:
//for cross browser support
var XMLHttpFactories =
[
function () {return new XMLHttpRequest()},
function () {return new ActiveXObject("Msxml2.XMLHTTP")},
function () {return new ActiveXObject("Msxml3.XMLHTTP")},
function () {return new ActiveXObject("Microsoft.XMLHTTP")}
];
//find an xmlhttpfactory that will work
function createXMLHTTPObject()
{
var xmlhttp = false;
for (var i=0;i<XMLHttpFactories.length;i++) {
try {
xmlhttp = XMLHttpFactories[i]();
}
catch (e) {
continue;
}
break;
}
return xmlhttp;
};
//process post variables for your AJAX request
function parsePostData(postData)
{
var appendString = '?';
for(key in postData)
{
appendString += key + '=' + postData[key] + '&';
};
appendStrTrim = appendString.substring(0, appendString.length-1)
return appendStrTrim;
};
//this is where the magic happens
function sendRequest(url,callback,postData)
{
var req = createXMLHTTPObject();
if (!req) return;
var method = (postData) ? "POST" : "GET";
req.open(method,url,true);
if (postData){
req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
if (postData.passwd){
req.withCredentials = true;
}
}
req.onreadystatechange = function () {
if (req.readyState != 4) return;
if (req.status != 200 && req.status != 304) {
var errorCode = 'HTTP error: ' + req.status;
callback(errorCode);
}
var response = JSON.parse(req.response)
if (response.jquery){
console.log(req.getAllResponseHeaders());
}
if(response.data && response.data.modhash){
reddit.control.setModHash(response.data.modhash )
}
if(response.data && response.data.children && typeof callback =='function'){
callback(response.data.children);
}else if(response.data && typeof callback=='function'){
callback(response.data);
}else if(typeof callback== 'function'){
callback(response);
};
}
if (req.readyState == 4) return;
var postString = parsePostData(postData);
req.send(postString);
};
因此,當您想更改PHP變量時,可以這樣調用sendRequest()
:
`sendRequest('http://example.com/changeThosePHPVariables.php', function(){/*do this when done*/}, {amt: 'value', f: 'value'})
那么您只需要使用changeThosePHPVariables.php
重新分配變量,就可以在它們中找到$_POST['amt']
和$_POST['f']
。
如果您使用的是JQuery之類的庫,那么一切都將變得更加容易,您只需使用$ .ajax()即可完成工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.