2013-07-06 3 views
-2

У меня есть пользователь, который вводит значение в форме, а onClick() активирует функцию, которая использует URL-адрес, который пользователь вставляет и обрезает (используя алгоритм, который я сделал, но это не имеет значения). Я получаю строку из 11 символов, и я не уверен, как получить это на php-страницу, которая отправляет ее в мою базу данных. То, как я делаю это, теперь переводит браузер на новую страницу, и я хочу, чтобы пользователь остался на той же странице.Как передать переменную javascript в php, не открывая новую страницу

function findvideoid(){ 
    window.location.href = 'submitvid.php?videoID=' + videoID; 
} 
+0

AJAX, с помощью AJAX ... – mishik

+0

Использовать AJAX ....... – ComFreek

+0

** [JQuery Ajax ^] (http://api.jquery.com/jQuery.ajax/) ** – CodeAngry

ответ

-2

Вы можете легко сделать это в JQuery

$.ajax({ 
    type: "POST", 
    url: url, 
    data: data, 
    success: success, 
    dataType: dataType 
}); 
+0

также вы не должны возвращать весь html. – ioanb7

+0

Почему downvote ?? Я думаю, что это отличный способ. –

+0

@AkseliKoskinen. Я не могу говорить за downvoters, но вы предполагаете, что OP уже использует jQuery или хочет его включить. – ComFreek

-1

использовать AJAX:

function findvideoid() 
{ 
    var html = $.ajax({ 
    type: "POST", 
    url: "submitvid.php", 
    data: "videoID=" + videoID, 
    async: false 
    }).responseText; 

    if(html == "success") 
    {  
    // Uncomment the following line in your application 
    //return true; 
    } 
    else 
    {  
     return false; 
    } 
} 
+4

'Uncaught ReferenceError: $ не определен' jQuery не является стандартным – VeXii

+0

@VeXii Я бы хотел :-) –

+1

@JanDvorak позволяет просто быть счастливым, что вы не контролируете ecmagroup тогда :) – VeXii

3

чистого раствора JavaScript (рекомендуется):

var xhr = new XMLHttpRequest(); 
xhr.onreadystatechange = function() { 
    if (xhr.readyStatus == 4) { // finished 
    if (xhr.status == 200) { // 200 HTTP code returned by server 
    } 
    else { // error 
    } 
    } 
}; 
xhr.open("GET", "your-script.php?videoID=" + encodeURIComponent(videoID)); 
xhr.send(null); 

решение JQuery (рекомендуется, если вы уже используете jQuery в своем проекте или i е вы хотите попробовать его):

// PHP script can access $_GET['videoID'] 
jQuery.get("your-script.php?videoID=" + encodeURIComponent(videoID)); 

// PHP script can access $_POST['videoID'] 
jQuery.post("your-script.php", {videoID: videoID}); 

jQuery.get(url [, data ] [, success(data, textStatus, jqXHR) ] [, dataType ])

jQuery.post(url [, data ] [, success(data, textStatus, jqXHR) ] [, dataType ])

+2

Что относительно старого IE – Petah

+2

@Petah вы имеете в виду, как, IE7 и старше? Вы действительно хотите поддержать их? –

+3

Даже IE 7 поддерживает его! См. [Здесь] (http://msdn.microsoft.com/en-us/library/ms537505 (v = vs.85) .aspx)! Это не повод для понижения. – ComFreek

2

насчет маскировки фактического АЯКС вызова с загрузкой внешнего HTML ресурса?
Если никакого реального обратного вызова не ожидается, вы можете ввести iframe в документ, указывающий на указанный URL, а затем удалить его из документа.

Вот пример доступа к апи URL вашего BACKEND в маскируется загрузке изображения:

function findvideoid(id, callback){ 
    var img = new Image(); 
    img.onload = callback; 
    img.src = apiUrl + '?videoId=' + encodeURIComponent(id) 
       + '&antiCache=' + new Date().getTime(); 
} 

Нет Аякса. Никаких других библиотек. Google делает это для своей аналитики. Почему ты не должен?

+0

Возможно, что браузер кэширует URI, не так ли? – ComFreek

+0

Действительно? downvote для этого? См. Обновление: теперь браузер НИКОГДА не кэширует URL. –

+0

** Я не уменьшал вас **! Я просто прокомментировал, потому что я (мы) не знаю конкретного варианта использования OP. – ComFreek

Смежные вопросы