Как изменить значение двух переменных в PHP из события JavaScript onChange - PullRequest
0 голосов
/ 01 апреля 2012

У меня есть форма со следующими переменными:

$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

Как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 01 апреля 2012

Вы можете использовать ajax для получения нового значения переменной с сервера и использовать javascript, чтобы делать то, что вам нужно.

0 голосов
/ 01 апреля 2012

Для этого вам нужно будет использовать 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 () для грязной работы.

0 голосов
/ 01 апреля 2012

Переменные PHP и javascript - это две разные вещи.

PHP - на стороне сервера, javascript - на стороне клиента (в браузере).

Если вы хотите обмениваться данными только локально (вы этого не делали)объясните, почему вам нужно поменять местами переменные, чтобы я мог только предполагать), я предлагаю объявить переменную Javascript, инициализированную переменными php.

Что вам нужно знать, так это то, что вы используете php для создания страницы (содержащейhtml / css и javascript) с различными переменными.Он генерирует текст.Таким образом, нет никакой связи между переменными PHP и сгенерированным выводом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...