2016-07-18 18 views
0

Ich erstellte eine Anwendung, die JSON-Daten an ein Google-Formular mit Ajax sendet. Mein Problem ist, dass ich nicht alle Daten senden kann, die ich möchte, was bedeutet, dass ich nicht in der Lage bin, Inhalte innerhalb eines Textfelds und eines Auswahl-Tags zu senden. Ich arbeite mit der URL, leider musste ich etwas versteckten Inhalt verwenden, um einige Daten von einer Seite auf eine andere Seite zu verschieben, wenn ich nicht in der Lage bin, einige Daten zu bekommen.Senden von JSON-Daten an Google-Formular mit Textarea und wählen Sie Tag

Hier ist mein Code: Der javascript:

$(document).ready(function() { 

function getParameterByName(name, url) { 
    if (!url) url = window.location.href; 
    name = name.replace(/[\[\]]/g, "\\$&"); 
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), 
    results = regex.exec(url); 
    if (!results) return null; 
    if (!results[2]) return ''; 
    return decodeURIComponent(results[2].replace(/\+/g, " ")); 
    } 

    function postContactToGoogle() { 
    var full_name = getParameterByName('full_name'); 
    var home_address = getParameterByName('home_address'); 
    var email = getParameterByName('email'); 
    var phone_number = getParameterByName('phone_number'); 
    var condition = getParameterByName('condition'); 
    var extra = getParameterByName('extra'); 
    var when_to_sell = getParameterByName('when_to_sell'); 
    console.log(full_name, home_address, email, phone_number, condition, extra, when_to_sell); 
    var google_url = "https://docs.google.com/forms/d/e/1FAIpQLSdqMQL_dzhdFSVpuVtlcfIa4xHe9DNP8yozB1ncAB2e_byBJQ/formResponse"; 

    if (full_name !== "" || email !== "" || phone_number !== "" || home_address !== "" || condition !== "" || extra !== "" || when_to_sell !== "") 
    { 
     $.ajax({ 
     url: google_url, 
     data: { 
      "entry.515947838": full_name, 
      "entry.190795925": email, 
      "entry.1306603567": phone_number, 
      "entry.1032461271": home_address, 
      "entry.100378601": condition, 
      "entry.637314286": extra, 
      "entry.608122467": when_to_sell 
     }, 
     type: "POST", 
     dataType: "json", 
     statusCode: { 
      0: function() { 
      }, 
      200: function() { 
      } 
     } 
     }); 
    } 
    } 
    postContactToGoogle(); 
}); 

Und hier ist der html, die mir eine Menge Probleme schafft: Dies ist eine Seite, wenn ich einige Daten bin zu sammeln, die ich mit der später senden ajax

<form action="step-3.html" id="form-step2"> 
     <div class="form-control full-width"> 
      <label for="condition">What conditions is the property in?</label> 
      <select id="condition" name="condition"> 
      <option value="Good">Good</option> 
      <option value="Fair">Fair</option> 
      <option value="Bad">Bad</option> 
      </select> 
     </div> 
     <div class="form-control full-width"> 
      <label for="extra">Any updates, amenities or extras?</label> 
      <textarea name="extra" id="extra" placeholder="e.g: recent reno, pool etc." rows="3"></textarea> 
     </div> 
     <div class="form-control full-width"> 
      <label for="when_to_sell">When do you want to sell?</label> 
      <select id="when_to_sell" name="when_to_sell"> 
      <option value="Immediately">Immediately</option> 
      <option value="Next 1-3 months">Next 1-3 months</option> 
      <option value="Next 3-6 months">Next 3-6 months</option> 
      </select> 
     </div> 
     <div class="form-control full-width"> 
      <label>Are you currently working with a Real Estate Agent?*</label> 
      <input checked="checked" id="working_for_real_estate_agent_no" name="working_for_real_estate_agent" type="radio" /> 
      <label class="radio-label" for="working_for_real_estate_agent_no">No</label> 
      <input id="working_for_real_estate_agent_yes" name="working_for_real_estate_agent" type="radio" /> 
      <label class="radio-label" for="working_for_real_estate_agent_yes">Yes, I am working with a Realtor.</label> 
      <div class="asteriks">*We ask this to ensure there is no conflict of interest.</div> 
     </div> 
     <div class="form-control full-width"> 
      <input id="home_address" name="home_address" type="hidden" /> 
      <div class="home-evaluation-option-container"> 
      <div class="home-evaluation-option"> 
       <input id="exact-market-value" name="exact-market-value" type="button" value="Send Property Details" /> 
      </div> 
      </div> 
     </div> 
     </form> 

Und hier ist der Hack, die ich versuchte, die leider nur mit dem Input-Tag funktioniert:

<form action="step-4.html" id="form-step2"> 
     <div class="form-control full-width"> 
      <input name="full_name" placeholder="Full Name" type="input" data-validation="length alphanumeric" data-validation-length="min1" data-validation-error-msg="Please, insert your name" /> 
     </div> 
     <div class="form-control full-width"> 
      <input id="email" name="email" placeholder="Email" type="input" data-validation="email" /> 
     </div> 
     <div class="form-control full-width"> 
      <input id="phone_number" name="phone_number" placeholder="Phone Number" type="input" name="home-phone" data-validation="number" /> 
     </div> 

     <input id="home_address" name="home_address" type="hidden" class="hide" /> 

     <select id="condition" name="condition" class="hide"> 
      <option value="Good">Good</option> 
      <option value="Fair">Fair</option> 
      <option value="Bad">Bad</option> 
     </select> 
     <textarea name="extra" id="extra" class="hide"></textarea> 
     <select id="when_to_sell" name="when_to_sell" class="hide"> 
      <option value="Immediately">Immediately</option> 
      <option value="Next 1-3 months">Next 1-3 months</option> 
      <option value="Next 3-6 months">Next 3-6 months</option> 
     </select> 

     <div class="form-control submit-button"> 
      <input name="submit" type="submit" value="Generate Report" /> 
     </div> 
     </form> 

Irgendein Gedanke, um Daten aus einem ausgewählten oder einem Textbereich zu sammeln?

Hier ist die Seite, wo Sie den Code in Aktion finden Sie unter:

http://homeworth.online/hockinghomesteam/

+0

Ist Ihre Funktion: 'getParameterByName ('extra')' holt den Wert aus dem TextArea-Element? –

+0

Ja, das setzt voraus, aber ich erhalte einen Nullwert –

+0

Ich habe keine Ahnung was die 'getParameterByName()' Funktion macht. Es führt eine RegEx-Übereinstimmung aus, aber ich sehe nicht, wie es den Wert aus dem Textfeld jemals erhalten würde. –

Antwort

1

Hier ist ein Beispiel dafür, wie man den Wert aus einem Textfeld Element erhalten kann:

<!DOCTYPE html> 
<html> 
<body> 

<textarea id="idExtra_Info"> 
Some content 
</textarea> 

<button type="button" onclick="myFunction()">Try it</button> 

<script> 
function myFunction() { 
    var x = document.getElementById("idExtra_Info").value; 
    alert(x); 
} 
</script> 

</body> 
</html> 
+0

Das Problem meines Codes ist, dass ich wenige Formulare habe. Der erste ist auf der ersten Seite und der, den ich brauche, ist auf der zweiten Seite. Unglücklicherweise für mich werde ich alle Daten auf der dritten Seite (mit Ajax und Jquery) abrufen. Aus diesem Grund benutze ich die URL und ich verwende nicht die .val-Methode oder die .value mit Javascript. Aus demselben Grund verstecke ich das Formularfeld, um alle gesammelten Daten auf die letzte Seite zu schicken. Macht es Sinn für dich? –

+0

Jedes Mal, wenn der Benutzer auf eine neue Seite geht, werden auf Ihrer Website alle neuen Inhalte bereitgestellt? –

+0

Können Sie Ihre Frage besser erklären? Ich denke ja, ich meine in gewisser Weise war ich in der Lage, die Daten an die URL zu der ersten bis zur dritten Seite zu senden, die Formularfeldeingabe hinzugefügt und sie mit CSS versteckt –