Hướng dẫn how to get value of php variable in javascript - cách lấy giá trị của biến php trong javascript

Cập nhật: Tôi hoàn toàn viết lại câu trả lời này. Mã cũ vẫn còn đó, ở phía dưới, nhưng tôi không khuyên bạn nên.

Có hai cách chính bạn có thể nhận được các biến GET:

  1. Thông qua mảng
    function QuerystringTable[_url]{
        // private
        var url   = _url,
            table = {};
    
        function buildTable[]{
            getQuerystring[].split['&'].filter[validatePair].map[parsePair];
        }
    
        function parsePair[pair]{
            var splitPair = pair.split['='],
                key       = decodeURIComponent[splitPair[0]],
                value     = decodeURIComponent[splitPair[1]];
    
            table[key] = value;
        }
    
        function validatePair[pair]{
            var splitPair = pair.split['='];
    
            return !!splitPair[0] && !!splitPair[1];
        }
    
        function validateUrl[]{
            if[typeof url !== "string"]{
                throw "QuerystringTable[] :: : expected string, got " + typeof url;
            }
    
            if[url == ""]{
                throw "QuerystringTable[] :: Empty string given for argument ";
            }
        }
    
        // public
        function getKeys[]{
            return Object.keys[table];
        }
    
        function getQuerystring[]{
            var string;
    
            validateUrl[];
            string = url.split['?'][1];
    
            if[!string]{
                string = url;
            }
    
            return string;
        }
    
        function getValue[key]{
            var match = table[key] || null;
    
            if[!match]{
                return "undefined";
            }
    
            return match;
        }
    
        buildTable[];
        this.getKeys        = getKeys;
        this.getQuerystring = getQuerystring;
        this.getValue       = getValue;
    }
    
    0 của PHP [mảng kết hợp].
  2. Thông qua đối tượng
    function QuerystringTable[_url]{
        // private
        var url   = _url,
            table = {};
    
        function buildTable[]{
            getQuerystring[].split['&'].filter[validatePair].map[parsePair];
        }
    
        function parsePair[pair]{
            var splitPair = pair.split['='],
                key       = decodeURIComponent[splitPair[0]],
                value     = decodeURIComponent[splitPair[1]];
    
            table[key] = value;
        }
    
        function validatePair[pair]{
            var splitPair = pair.split['='];
    
            return !!splitPair[0] && !!splitPair[1];
        }
    
        function validateUrl[]{
            if[typeof url !== "string"]{
                throw "QuerystringTable[] :: : expected string, got " + typeof url;
            }
    
            if[url == ""]{
                throw "QuerystringTable[] :: Empty string given for argument ";
            }
        }
    
        // public
        function getKeys[]{
            return Object.keys[table];
        }
    
        function getQuerystring[]{
            var string;
    
            validateUrl[];
            string = url.split['?'][1];
    
            if[!string]{
                string = url;
            }
    
            return string;
        }
    
        function getValue[key]{
            var match = table[key] || null;
    
            if[!match]{
                return "undefined";
            }
    
            return match;
        }
    
        buildTable[];
        this.getKeys        = getKeys;
        this.getQuerystring = getQuerystring;
        this.getValue       = getValue;
    }
    
    1 của JavaScript.

Với PHP, bạn chỉ có thể tạo một "mẫu", điều này giống như thế này:


var $_GET = JSON.parse[""];

Tuy nhiên, tôi nghĩ rằng hỗn hợp các ngôn ngữ ở đây là cẩu thả, và nên tránh nếu có thể. Tôi thực sự không thể nghĩ ra bất kỳ lý do chính đáng nào để trộn dữ liệu giữa PHP và JavaScript.

Nó thực sự sôi sục với điều này:

  • Nếu dữ liệu có thể thu được thông qua JavaScript, hãy sử dụng JavaScript.
  • Nếu không thể lấy dữ liệu thông qua JavaScript, hãy sử dụng AJAX.
  • Nếu bạn cần giao tiếp với máy chủ, hãy sử dụng Ajax.

Vì chúng ta đang nói về

function QuerystringTable[_url]{
    // private
    var url   = _url,
        table = {};

    function buildTable[]{
        getQuerystring[].split['&'].filter[validatePair].map[parsePair];
    }

    function parsePair[pair]{
        var splitPair = pair.split['='],
            key       = decodeURIComponent[splitPair[0]],
            value     = decodeURIComponent[splitPair[1]];

        table[key] = value;
    }

    function validatePair[pair]{
        var splitPair = pair.split['='];

        return !!splitPair[0] && !!splitPair[1];
    }

    function validateUrl[]{
        if[typeof url !== "string"]{
            throw "QuerystringTable[] :: : expected string, got " + typeof url;
        }

        if[url == ""]{
            throw "QuerystringTable[] :: Empty string given for argument ";
        }
    }

    // public
    function getKeys[]{
        return Object.keys[table];
    }

    function getQuerystring[]{
        var string;

        validateUrl[];
        string = url.split['?'][1];

        if[!string]{
            string = url;
        }

        return string;
    }

    function getValue[key]{
        var match = table[key] || null;

        if[!match]{
            return "undefined";
        }

        return match;
    }

    buildTable[];
    this.getKeys        = getKeys;
    this.getQuerystring = getQuerystring;
    this.getValue       = getValue;
}
0 ở đây [hoặc ít nhất là tôi cho rằng chúng tôi đã viết câu trả lời ban đầu], bạn nên lấy nó qua JavaScript.

Trong câu trả lời ban đầu, tôi đã có hai phương pháp để lấy chuỗi truy vấn, nhưng nó quá lộn xộn và dễ bị lỗi. Đó là bây giờ ở dưới cùng của câu trả lời này.

Dù sao, tôi đã thiết kế một "lớp" nhỏ để lấy chuỗi truy vấn [thực ra là một hàm tạo đối tượng, xem phần có liên quan từ bài viết OOP của MDN]:

function QuerystringTable[_url]{
    // private
    var url   = _url,
        table = {};

    function buildTable[]{
        getQuerystring[].split['&'].filter[validatePair].map[parsePair];
    }

    function parsePair[pair]{
        var splitPair = pair.split['='],
            key       = decodeURIComponent[splitPair[0]],
            value     = decodeURIComponent[splitPair[1]];

        table[key] = value;
    }

    function validatePair[pair]{
        var splitPair = pair.split['='];

        return !!splitPair[0] && !!splitPair[1];
    }

    function validateUrl[]{
        if[typeof url !== "string"]{
            throw "QuerystringTable[] :: : expected string, got " + typeof url;
        }

        if[url == ""]{
            throw "QuerystringTable[] :: Empty string given for argument ";
        }
    }

    // public
    function getKeys[]{
        return Object.keys[table];
    }

    function getQuerystring[]{
        var string;

        validateUrl[];
        string = url.split['?'][1];

        if[!string]{
            string = url;
        }

        return string;
    }

    function getValue[key]{
        var match = table[key] || null;

        if[!match]{
            return "undefined";
        }

        return match;
    }

    buildTable[];
    this.getKeys        = getKeys;
    this.getQuerystring = getQuerystring;
    this.getValue       = getValue;
}

Demo jsfiddle

Nó mạnh hơn nhiều, không dựa vào regex, kết hợp các phần tốt nhất của cả hai phương pháp trước đó và sẽ xác nhận đầu vào của bạn. Bạn có thể cung cấp cho nó các chuỗi truy vấn khác với phần từ URL và nó sẽ thất bại lớn nếu bạn đưa ra đầu vào xấu. Hơn nữa, giống như một đối tượng/mô -đun tốt, nó không biết hoặc quan tâm đến bất cứ điều gì bên ngoài định nghĩa lớp, vì vậy nó có thể được sử dụng với bất cứ điều gì.

Chất xây dựng tự động điền vào bảng nội bộ của nó và giải mã từng chuỗi sao cho

function QuerystringTable[_url]{
    // private
    var url   = _url,
        table = {};

    function buildTable[]{
        getQuerystring[].split['&'].filter[validatePair].map[parsePair];
    }

    function parsePair[pair]{
        var splitPair = pair.split['='],
            key       = decodeURIComponent[splitPair[0]],
            value     = decodeURIComponent[splitPair[1]];

        table[key] = value;
    }

    function validatePair[pair]{
        var splitPair = pair.split['='];

        return !!splitPair[0] && !!splitPair[1];
    }

    function validateUrl[]{
        if[typeof url !== "string"]{
            throw "QuerystringTable[] :: : expected string, got " + typeof url;
        }

        if[url == ""]{
            throw "QuerystringTable[] :: Empty string given for argument ";
        }
    }

    // public
    function getKeys[]{
        return Object.keys[table];
    }

    function getQuerystring[]{
        var string;

        validateUrl[];
        string = url.split['?'][1];

        if[!string]{
            string = url;
        }

        return string;
    }

    function getValue[key]{
        var match = table[key] || null;

        if[!match]{
            return "undefined";
        }

        return match;
    }

    buildTable[];
    this.getKeys        = getKeys;
    this.getQuerystring = getQuerystring;
    this.getValue       = getValue;
}
3 chẳng hạn, sẽ trở thành bên trong:

{
    "foo?"      : "bar baz",
    "ampersand" : "this thing: &"
}

Tất cả các công việc được thực hiện cho bạn khi khởi tạo.

Đây là cách sử dụng nó:

var qst = new QuerystringTable[location.href];
qst.getKeys[]        // returns an array of keys
qst.getValue["foo"]  // returns the value of foo, or "undefined" if none.
qst.getQuerystring[] // returns the querystring

Điều đó tốt hơn nhiều. Và để lại phần URL cho cả lập trình viên cho phép điều này được sử dụng trong môi trường không phải là trình duyệt [được thử nghiệm trong cả

function QuerystringTable[_url]{
    // private
    var url   = _url,
        table = {};

    function buildTable[]{
        getQuerystring[].split['&'].filter[validatePair].map[parsePair];
    }

    function parsePair[pair]{
        var splitPair = pair.split['='],
            key       = decodeURIComponent[splitPair[0]],
            value     = decodeURIComponent[splitPair[1]];

        table[key] = value;
    }

    function validatePair[pair]{
        var splitPair = pair.split['='];

        return !!splitPair[0] && !!splitPair[1];
    }

    function validateUrl[]{
        if[typeof url !== "string"]{
            throw "QuerystringTable[] :: : expected string, got " + typeof url;
        }

        if[url == ""]{
            throw "QuerystringTable[] :: Empty string given for argument ";
        }
    }

    // public
    function getKeys[]{
        return Object.keys[table];
    }

    function getQuerystring[]{
        var string;

        validateUrl[];
        string = url.split['?'][1];

        if[!string]{
            string = url;
        }

        return string;
    }

    function getValue[key]{
        var match = table[key] || null;

        if[!match]{
            return "undefined";
        }

        return match;
    }

    buildTable[];
    this.getKeys        = getKeys;
    this.getQuerystring = getQuerystring;
    this.getValue       = getValue;
}
4 và
function QuerystringTable[_url]{
    // private
    var url   = _url,
        table = {};

    function buildTable[]{
        getQuerystring[].split['&'].filter[validatePair].map[parsePair];
    }

    function parsePair[pair]{
        var splitPair = pair.split['='],
            key       = decodeURIComponent[splitPair[0]],
            value     = decodeURIComponent[splitPair[1]];

        table[key] = value;
    }

    function validatePair[pair]{
        var splitPair = pair.split['='];

        return !!splitPair[0] && !!splitPair[1];
    }

    function validateUrl[]{
        if[typeof url !== "string"]{
            throw "QuerystringTable[] :: : expected string, got " + typeof url;
        }

        if[url == ""]{
            throw "QuerystringTable[] :: Empty string given for argument ";
        }
    }

    // public
    function getKeys[]{
        return Object.keys[table];
    }

    function getQuerystring[]{
        var string;

        validateUrl[];
        string = url.split['?'][1];

        if[!string]{
            string = url;
        }

        return string;
    }

    function getValue[key]{
        var match = table[key] || null;

        if[!match]{
            return "undefined";
        }

        return match;
    }

    buildTable[];
    this.getKeys        = getKeys;
    this.getQuerystring = getQuerystring;
    this.getValue       = getValue;
}
5] và cho phép một kịch bản mà bạn có thể muốn so sánh hai chuỗi truy vấn khác nhau.

var qs1 = new QuerystringTable[/* url #1 */],
    qs2 = new QuerystringTable[/* url #2 */];

if [qs1.getValue["vid"] !== qs2.getValue["vid"]]{
    // Do something
}

Như tôi đã nói ở trên, có hai phương pháp lộn xộn được tham chiếu bởi câu trả lời này. Tôi đang giữ họ ở đây để độc giả không phải săn lùng lịch sử sửa đổi để tìm thấy chúng. Họ đây rồi:

1]

function QuerystringTable[_url]{
    // private
    var url   = _url,
        table = {};

    function buildTable[]{
        getQuerystring[].split['&'].filter[validatePair].map[parsePair];
    }

    function parsePair[pair]{
        var splitPair = pair.split['='],
            key       = decodeURIComponent[splitPair[0]],
            value     = decodeURIComponent[splitPair[1]];

        table[key] = value;
    }

    function validatePair[pair]{
        var splitPair = pair.split['='];

        return !!splitPair[0] && !!splitPair[1];
    }

    function validateUrl[]{
        if[typeof url !== "string"]{
            throw "QuerystringTable[] :: : expected string, got " + typeof url;
        }

        if[url == ""]{
            throw "QuerystringTable[] :: Empty string given for argument ";
        }
    }

    // public
    function getKeys[]{
        return Object.keys[table];
    }

    function getQuerystring[]{
        var string;

        validateUrl[];
        string = url.split['?'][1];

        if[!string]{
            string = url;
        }

        return string;
    }

    function getValue[key]{
        var match = table[key] || null;

        if[!match]{
            return "undefined";
        }

        return match;
    }

    buildTable[];
    this.getKeys        = getKeys;
    this.getQuerystring = getQuerystring;
    this.getValue       = getValue;
}
6. Điều này chỉ lấy url và phân tích trực tiếp nó với regex

$_GET=function[key,def]{
    try{
        return RegExp['[?&;]'+key+'=[[^?&#;]*]'].exec[location.href][1]
    }catch[e]{
        return def||''
    }
}

Dễ dàng, nếu chuỗi truy vấn là

function QuerystringTable[_url]{
    // private
    var url   = _url,
        table = {};

    function buildTable[]{
        getQuerystring[].split['&'].filter[validatePair].map[parsePair];
    }

    function parsePair[pair]{
        var splitPair = pair.split['='],
            key       = decodeURIComponent[splitPair[0]],
            value     = decodeURIComponent[splitPair[1]];

        table[key] = value;
    }

    function validatePair[pair]{
        var splitPair = pair.split['='];

        return !!splitPair[0] && !!splitPair[1];
    }

    function validateUrl[]{
        if[typeof url !== "string"]{
            throw "QuerystringTable[] :: : expected string, got " + typeof url;
        }

        if[url == ""]{
            throw "QuerystringTable[] :: Empty string given for argument ";
        }
    }

    // public
    function getKeys[]{
        return Object.keys[table];
    }

    function getQuerystring[]{
        var string;

        validateUrl[];
        string = url.split['?'][1];

        if[!string]{
            string = url;
        }

        return string;
    }

    function getValue[key]{
        var match = table[key] || null;

        if[!match]{
            return "undefined";
        }

        return match;
    }

    buildTable[];
    this.getKeys        = getKeys;
    this.getQuerystring = getQuerystring;
    this.getValue       = getValue;
}
7, thì
function QuerystringTable[_url]{
    // private
    var url   = _url,
        table = {};

    function buildTable[]{
        getQuerystring[].split['&'].filter[validatePair].map[parsePair];
    }

    function parsePair[pair]{
        var splitPair = pair.split['='],
            key       = decodeURIComponent[splitPair[0]],
            value     = decodeURIComponent[splitPair[1]];

        table[key] = value;
    }

    function validatePair[pair]{
        var splitPair = pair.split['='];

        return !!splitPair[0] && !!splitPair[1];
    }

    function validateUrl[]{
        if[typeof url !== "string"]{
            throw "QuerystringTable[] :: : expected string, got " + typeof url;
        }

        if[url == ""]{
            throw "QuerystringTable[] :: Empty string given for argument ";
        }
    }

    // public
    function getKeys[]{
        return Object.keys[table];
    }

    function getQuerystring[]{
        var string;

        validateUrl[];
        string = url.split['?'][1];

        if[!string]{
            string = url;
        }

        return string;
    }

    function getValue[key]{
        var match = table[key] || null;

        if[!match]{
            return "undefined";
        }

        return match;
    }

    buildTable[];
    this.getKeys        = getKeys;
    this.getQuerystring = getQuerystring;
    this.getValue       = getValue;
}
8 sẽ trả về
function QuerystringTable[_url]{
    // private
    var url   = _url,
        table = {};

    function buildTable[]{
        getQuerystring[].split['&'].filter[validatePair].map[parsePair];
    }

    function parsePair[pair]{
        var splitPair = pair.split['='],
            key       = decodeURIComponent[splitPair[0]],
            value     = decodeURIComponent[splitPair[1]];

        table[key] = value;
    }

    function validatePair[pair]{
        var splitPair = pair.split['='];

        return !!splitPair[0] && !!splitPair[1];
    }

    function validateUrl[]{
        if[typeof url !== "string"]{
            throw "QuerystringTable[] :: : expected string, got " + typeof url;
        }

        if[url == ""]{
            throw "QuerystringTable[] :: Empty string given for argument ";
        }
    }

    // public
    function getKeys[]{
        return Object.keys[table];
    }

    function getQuerystring[]{
        var string;

        validateUrl[];
        string = url.split['?'][1];

        if[!string]{
            string = url;
        }

        return string;
    }

    function getValue[key]{
        var match = table[key] || null;

        if[!match]{
            return "undefined";
        }

        return match;
    }

    buildTable[];
    this.getKeys        = getKeys;
    this.getQuerystring = getQuerystring;
    this.getValue       = getValue;
}
9 và
{
    "foo?"      : "bar baz",
    "ampersand" : "this thing: &"
}
0 sẽ trả về
{
    "foo?"      : "bar baz",
    "ampersand" : "this thing: &"
}
1

Bây giờ bạn có thể nhận thấy ngay lập tức rằng cú pháp là khác nhau do kết quả của một chức năng. Thay vì

{
    "foo?"      : "bar baz",
    "ampersand" : "this thing: &"
}
2, đó là
{
    "foo?"      : "bar baz",
    "ampersand" : "this thing: &"
}
3. Chà, tôi nghĩ về điều đó :]

Đây là phương pháp thứ hai:

2]

{
    "foo?"      : "bar baz",
    "ampersand" : "this thing: &"
}
4

onload=function[]{
    $_GET={}//the lack of 'var' makes this global
    str=location.search.split['&']//not '?', this will be dealt with later
    for[i in str]{
        REG=RegExp['[[^?&#;]*]=[[^?&#;]*]'].exec[str[i]]
        $_GET[REG[1]]=REG[2]
    }
}

Hãy chứng kiến! $ _Get hiện là một đối tượng chứa một chỉ mục của mọi đối tượng trong URL, vì vậy bây giờ điều này là có thể:

$_GET['ducksays']//returns 'quack'

Và điều này là có thể

for[i in $_GET]{
    document.write[i+': '+$_GET[i]+'']
}

Điều này chắc chắn là không thể với chức năng.

Một lần nữa, tôi không đề xuất mã cũ này. Nó được viết rất tệ.

Tôi có thể truy cập biến PHP trong JavaScript không?

Chúng tôi có thể chuyển dữ liệu từ PHP sang JavaScript theo hai cách tùy thuộc vào tình huống. Trước tiên, chúng tôi có thể truyền dữ liệu bằng toán tử gán đơn giản nếu chúng tôi muốn thực hiện thao tác trên cùng một trang. Lỗ hả chúng tôi có thể chuyển dữ liệu từ PHP sang JavaScript bằng cookie.pass the data using the simple assignment operator if we want to perform the operation on the same page. Else we can pass data from PHP to JavaScript using Cookies.

Làm thế nào đặt giá trị biến PHP trong JavaScript?

Để đặt biến PHP trong JavaScript, chúng tôi xác định biến JS và gán giá trị PHP bằng thẻ PHP với dấu ngoặc kép hoặc đôi.Hầu hết thời gian bạn phải đặt giá trị biến PHP trong JavaScript.Nếu chỉ có biến đơn giản như chuỗi hoặc bất kỳ số nguyên nào thì bạn chỉ có thể lặp lại biến JS với thẻ PHP.define a JS variable and assign PHP value using PHP tag with single or double quotes. Most of the time you have to set PHP variable value in JavaScript. If there is only simple variable like string or any integer then you can simply echo on the JS variable with PHP tag.

Làm thế nào để bạn lặp lại một biến trong JavaScript?

Từ khóa Echo được sử dụng để hiển thị các giá trị của các biến VAR1 và VAR2 cho tài liệu HTML có thể đọc được bởi trình duyệt thông thường.Thuộc tính này có thể được đưa vào một lợi thế bằng văn bản vào bảng điều khiển JavaScript bằng PHP.Mã JavaScript có thể được viết trong phần Echo và được đưa vào tài liệu HTML. which is readable by the browser normally. This property can be taken into an advantage in writing to JavaScript console using PHP. The JavaScript code can be written in the echo section and taken to the HTML document.

Làm thế nào truyền dữ liệu từ JavaScript sang PHP bằng AJAX?

ajax [{type: "post", url: 'logtime. php', data: "userId =" + userId, thành công: function [data] {alert ["thành công!"];}}];}];}];

Bài Viết Liên Quan

Chủ Đề