2017-02-14 6 views
1

Я проверил все другие «дублирующие» вопросы по этому вопросу. Но поразили стену с точки зрения поиска того, что не так с моим сценарием. Может быть что-то очень простое. Но у меня кончился пар, который нашел ошибку. Так что я здесь.проблема с получением глобальной переменной javascript в функции

Я пытаюсь создать список продуктов на веб-странице с ссылкой «Запросить» для каждого продукта. При нажатии на ссылку отображается идентификатор продукта и появляется краткая форма для добавления контактной информации пользователя. Когда пользователь отправляет форму, запрашиваемые сведения о продукте и контактные данные пользователя отправляются администратору.

Я делаю все это с помощью JS с вызовом Ajax Post в файл PHP.

Все хорошо принимает между этими двумя функциями

  1. Когда ссылка «ЗАПРАШИВАЕТ» нажата и
  2. При отправке формы кнопка нажата.

Моя проблема заключается в том, что я не могу передать переменную 'item' имени товара в функцию отправки. В функции отправки я получаю «item» undefined.

Я не слишком хорош в JS. Я знаю, что делаю некоторые процедурные ошибки. Было бы здорово, если бы кто-нибудь мог указать, что я делаю неправильно.

Мои коды;

HTML

<div class="prodlist"><div class="productimg"><h4 id="itemcf">Cupellation Furnace</h4><img src="images/cupellation-furnace.png" alt="cupellation furnace"></div><div class="prodtxt"> This is the product description area. This area will contain details and specifications</div><div id="inquirecf"><span>Inquire</span></div><div id="inqrescf"></div></div> 
<div class="prodlist"><div class="productimg"><h4 id="itemmf">Melting Furnace</h4><img src="images/furnace-2kg.png" alt="Melting furnace"></div><div class="prodtxt"> This is the product description area. This area will contain details and specifications</div><div id="inquiremf"><span>Inquire</span></div><div id="inqresmf"></div></div> 
<div id="inqform"> 
<span id="inqclose">Close</span> 
    <div style="clear:both"></div> 
<div id="inqresgen"></div> 
    <form id="forminq" method="post"> 
     Name : <input type="text" id="inqname" require><br> 
    <div style="clear:both"></div> 

     phone : <input type="number" id="inqphone" require><br> 
    <div style="clear:both"></div> 

     Email : <input type="email" id="inqemail" require><br> 
    <div style="clear:both"></div> 

     Location : <input type="text" id="inqloc" require><br> 
    <div style="clear:both"></div> 

     Message : <textarea cols="30" rows="10" id="inqmsg" require></textarea> 
    <div style="clear:both"></div> 

     <input type="submit" onClick="sendInq();" value="Send"> 
    <div style="clear:both"></div> 

    </form> 
    <div style="clear:both"></div> 
</div> 

JS

$(document).ready(function(){ 
var item; 

$('#inqclose').click(function(){ $('#inqform').fadeOut('fast');}); 

$('#inquirecf,#inquiremf').click(function(){ 

    var id = $(this).attr('id'); 
//alert(id); 
    if(id=="inquirecf"){alert("inquirecf"); item="Cupellation Furnace";} 
    else if(id=="inquiremf"){alert("inquiremf");item="Melting Furnace";} 
    else{alert("No Choices");} 
    $('#inqform').slideToggle('fast'); 

}); 

}); 
function sendInq(item){ 
    var itemv=item; 
    event.preventDefault(); 
    var inqname=$('#inqname').val(); 
    var inqphone=$('#inqphone').val(); 
    var inqemail=$('#inqemail').val(); 
    var inqloc=$('#inqloc').val(); 
    var inqmsg=$('#inqmsg').val(); 
    alert("Item : "+ itemv); 

    $.post("inquire.php", 
     { 
      itemname: itemv, 
      inqname: inqname, 
      inqphone: inqphone, 
      inqemail: inqemail, 
      inqloc: inqloc, 
      inqmsg: inqmsg 
     }, 
     function(data,status){ 
    //  alert("Data: " + data + "\nStatus: " + status); 

      $('#inqresgen').html(data); 
      ///$('#inqres2').html("<h4>Inquiry Sent</h4>"); 

      $('#forminq').fadeOut('fast'); 

     }); 
} 
+0

Вы не передаете аргумент 'onClick =" sendInq(); "' – Satpal

+0

Он присутствует в типе ввода submit в html – user3526204

ответ

1

Ну после того, как много и прибегая к помощи изучения различных вариантов, я понял, что с помощью

window.item

Помогли

Теперь мой код выглядит

$('#inquirecf,#inquiremfhalfkg,#inquiremf1kg,#inquiremf2kg, 
#inquiremf5kg,#inquirecupels,#inquiremuffles,#inquirecrucibles,#inquirethermo, 
#inquiresilicon').click(function(){ 

var id = $(this).attr('id'); 

if(id=="inquirecf"){window.item="Cupellation Furnace";} 
else if(id=="inquiremfhalfkg"){window.item="Melting Furnace 0.5Kg";} 
else if(id=="inquiremf1kg"){window.item="Melting Furnace 1Kg";} 
else if(id=="inquiremf2kg"){window.item="Melting Furnace 2Kg";} 
else if(id=="inquiremf5kg"){window.item="Melting Furnace 5Kg";} 
else if(id=="inquirecupels"){window.item="Cupels";} 
else if(id=="inquiremuffles"){window.item="Muffles";} 
else if(id=="inquirecrucibles"){window.item="Crucibles";} 
else if(id=="inquirethermo"){window.item="Thermocouples";} 
else if(id=="inquiresilicon"){window.item="Silicon Carbide Elements";} 
else{alert("No Choices");} 
} 

function sendInq(item){ 
    var itemv=window.item; 
//...... 
} 

Все хорошо в настоящее время. Спасибо всем за ваши усилия.