У меня есть блок кода Javascript, который я пытаюсь настроить для отправки захваченных данных формы в веб-крючок.

var name = document.getElementById("pwebcontact1_field-name").value; var email = document.getElementById("pwebcontact1_field-email").value; var phone = document.getElementById("pwebcontact1_field-phonenumber").value; var zillow = document.getElementById("pwebcontact1_field-yourzillowprofilelinkcopyandpastehere").value; var data = { name: name.value, email: email.value, phone: phone.value, zillow: zillow.value }; $.ajax({ url: 'url', method: 'POST', contentType: 'application/json', crossDomain: true, headers: { 'authkey': 'key' }, data: JSON.stringify(data) }) .success(function(response) { console.log(response); }); 

URL и authkey настроены. Веб-крючок уведомил, но тело пусто. Пример, который издатель хука предлагает для публикации тела:

 "data": "{"hello":"world"}" 

Где обратный слеш ускользает, чтобы добавить кавычки. Я думаю, мне нужно получить поля данных в этом блоке кода между внешними кавычками.

Спасибо!

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

 var name = document.getElementById("pwebcontact1_field-name").value; var email = document.getElementById("pwebcontact1_field-email").value; var phone = document.getElementById("pwebcontact1_field-phone").value; var zillow = document.getElementById("pwebcontact1_field-zillow").value; var data = { name: name, email: email, phone: phone, zillow: zillow }; $.ajax({ url: 'YOUR_URL', method: 'POST', contentType: 'application/json', crossDomain: true, headers: { 'authkey': 'x' }, data: JSON.stringify(data) }) .success(function(response) { console.log(response); }); 

Вы должны позаботиться о проверке ваших входных данных, однако.


РЕДАКТИРОВАТЬ после комментария:

Вы используете неправильные идентификаторы в выборе. Используйте приведенный выше код, но поменяйте местами назначения переменных phone и zillow:

 var phone = document.getElementById("pwebcontact1_field-phonenumber").value; var zillow = document.getElementById("pwebcontact1_field-yourzillowprofilelinkcopyandpastehere").value; 

РЕДАКТИРОВАТЬ после комментария 2: Скорее всего, конечная точка, которую вы публикуете, не может правильно проанализировать тело запроса. Возможно это ожидает другую структуру или формат (тип пантомимы). Принимая во внимание ваш комментарий о том, как автор предложил отправлять данные, и предоставленный пример, мы исключаем проблему с mime-типом и считаем само собой разумеющимся, что это JSON . Так же и в структуре. Нам нужно обернуть текущий объект данных (свойства данных) в свойство «данные».

Попробуйте с:

 var data = { data: { name: name, email: email, phone: phone, zillow: zillow } }; 

Огромное спасибо @Zhulien, исправленный код, который работает:

 var name = document.getElementById("pwebcontact1_field-name").value; var email = document.getElementById("pwebcontact1_field-email").value; var phone = document.getElementById("pwebcontact1_field-phonenumber").value; var zillow = document.getElementById("pwebcontact1_field-yourzillowprofilelinkcopyandpastehere").value; var data = { data: { name: name, email: email, phone: phone, zillow: zillow } }; $.ajax({ url: 'YOUR_URL', method: 'POST', contentType: 'application/json', crossDomain: true, headers: { 'authkey': 'x' }, data: JSON.stringify(data) }) .success(function(response) { console.log(response); }); 

Вот как вы можете хранить и отправлять поля ввода данных из любой формы веб-сайта для отправки на веб-крючок!