2013-09-11 4 views
0

У меня есть форма заказа, над которым я работаю, где я использую jQuery для обновления цены в реальном времени, когда пользователь выбирает разные параметры. Итак, прямо сейчас конечная стоимость проекта, тип пакета и т. Д. Установлены в переменных jQuery, которые мне нужно преобразовать в PHP для вставки в базу данных.Передача переменных jQuery в PHP

Вы можете легко увидеть код: http://jsfiddle.net/cadengrant/uddPA/2/

И жить предварительный просмотр рабочего кода: http://www.htmlified.com/order-now/

function update_price() { 
     var base_cost = base_price; 
     var basic_price = base_price; 
     var pro_price = base_price; 

     jQuery('.packages .selected').each(function(index) { 
      base_cost += jQuery(this).data("price"); 
      basic_price += base_cost; 
      pro_price += base_cost + 70; 
     }); 

     jQuery('#markup-pages').each(function(index) { 
      var price = Number(jQuery(this).val()); 
      var packages = jQuery('.packages .selected').data("price"); 
      var pages = 0; 

      jQuery('#packages .selected').each(function(index) { 
       if(jQuery(this).hasClass('basic')) { 
        if(packages == 199) { 
         pages = price * 99 - 99; 
        } else if (packages == 189) { 
         pages = price * 94 - 94; 
        } else if (packages == 399) { 
         pages = price * 199 - 199; 
        } 
       } else if (jQuery(this).hasClass('pro')) { 
        if(pro_price == 269) { 
         pages = price * 134 - 134; 
        } else if (pro_price == 259) { 
         pages = price * 129 - 129; 
        } else if (pro_price == 469) { 
         pages = price * 234 - 234; 
        } 
       } 
      }); 

      base_cost += pages; 

      /* Single or plural page text */ 
      if(price == 1) { 
       var markup_pages = "markup page"; 
      } else { 
       var markup_pages = "markup pages"; 
      } 
      jQuery('.markup-pages').text(markup_pages); 
     }); 

     jQuery('#packages .selected').each(function(index) { 
      if(jQuery(this).hasClass('pro')) { 
       base_cost += 70; 
      } 
     }); 

     /* Update Doctype */ 
     jQuery('input[name=page_doctype]:checked', '#order-form').each(function(index) { 
      var basic_doctype_text = ""; 
      var pro_doctype_text = ""; 
      if(jQuery(this).hasClass('doctypehtml')) { 
       var doctype_text = "W3C Valid HTML5 & CSS3"; 
      } else if (jQuery(this).hasClass('doctypexhtml')) { 
       var doctype_text = "W3C Valid XHTML1 & CSS2"; 
       basic_doctype_text += " Transitional"; 
       pro_doctype_text += " Strict"; 
      } 

      jQuery('.doctype-text').html(doctype_text); 
      jQuery('.basic-doctype').html(doctype_text + basic_doctype_text); 
      jQuery('.pro-doctype').html(doctype_text + pro_doctype_text); 
     }); 

     jQuery('.price').html(base_cost); 
     jQuery('.basic-price').html(basic_price); 
     jQuery('.pro-price').html(pro_price); 
    } 

Мне просто нужно, чтобы выяснить, как передать эти переменные (DOCTYPE текст, основной тип документа, про doctype, base_cost и т. д.) в разделе JS в мою форму order.php, поэтому я могу обновить оплаченную сумму, тип пакета, который они выбрали, и т. д. Любая помощь будет принята с благодарностью.

+1

Вы можете сделать это с помощью запроса AJAX. –

+4

Я бы заполнил поля скрытой формы с помощью jquery. они будут отправлены при отправке остальной части формы –

+0

Сделайте запрос AJAX для обновления хранилища данных для выполнения других операций – rizwaniqbal

ответ

2

У вас уже есть форму на вашей странице. Я предлагаю вам создать скрытые вложения в этой форме, которые будут отправлены вместе с формой. Пример:

<input type="hidden" name="base_cost" value="999"> 

и вы можете легко настроить значение с помощью jquery. После отправки формы на странице PHP вы можете захватить эти значения с помощью:

$base_cost = $_POST['base_cost']; 

Но не забывайте дезинфицировать и проверять все вводимые пользователем. Надеюсь, что это помогает и извиняет мой английский.

+0

Это имеет смысл для меня .. однако, не все опции, которые пользователь может выбрать, создаются с использованием входных данных, а скорее div. Как мне сделать это с этими div, считая атрибут name недействительным для div? –

+1

Вы можете создавать события jquery в этих div, которые обновляют скрытые входы. Просто манипулировать DOM. –

+0

Хорошо ... имеет смысл .. откройте Google, чтобы выяснить, как это сделать. Я принял ваш ответ, но не могу голосовать из-за моей низкой репутации. Спасибо за вашу помощь. –

-1

Вы ищете способ рассказать информацию о сервере от Пользователя? То, что мой друг, не отправляя форму и не используя ajax, будет сложно :)

Если я правильно понимаю проблему, вы хотите, чтобы некоторые параметры изменялись на стороне клиента, когда пользователь запускал какое-либо действие. В этом случае вы можете загрузить возможные параметры при загрузке страницы, и когда пользователь запускает эти действия, получите новые параметры из уже загруженных. Затем, когда вы отправляете форму, вы добавляете к ней выбранные параметры.

Надеюсь, это поможет!

+0

Это очень запутанно ... Цена хранится в переменной base_cost ... Мне нужно передать base_cost на мой order.php (что обрабатывает форму), поэтому я может вставить окончательную цену (base_cost) в переменную, чтобы я мог хранить ее в БД, а также отправлять электронное письмо с подробной информацией .. включая эту цену. Edit: Кроме того, я не сказал, что я против использования Ajax. Я просто понятия не имею, как это сделать.Эти направления не очень помогают мне любопытно, как использовать Ajax для передачи этих переменных. –

+0

кто сказал, что не отправил форму? –

+0

@CadenGrant снова, поместите его в форму, в скрытом поле он будет в массиве post со всеми остальными полями формы, которые пользователь заполнил и будет доступен на order.php –

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