angularjs — передает объект Angular $ scope в PHP в форму Hubspot

Я пытаюсь передать значения Angular $ scope в форму Hubspot, вызывая функцию AJAX.

Я делаю вычисления в контроллере, а затем хочу, чтобы эти данные были введены в соответствующее поле формы Hubspot.

В моем контроллере Angular у меня есть это:

    $scope.submit = function(valid) {
$scope.$watch(function() {
return $scope.selectedValue
}, function() {
$scope.calculation = $scope.input1 * $scope.selectedValue;
}
}

Я хотел бы передать значение $ scope.calculation в скрипт php, а затем в форму hubspot.

Мой код выглядит так:

  $.ajax({
url: 'form.php',
type: 'POST',
dataType: "json",
data: {
company: $('#company').val(),
firstname: $('#firstname').val(),
lastname: $('#lastname').val(),
jobtitle: $('#jobtitle').val(),
email: $('#email').val(),
calculation: $scope.calculation
}

и я просто использую Hubspot PHP API для этой части, в частности для сбора входных данных.

$str_post = "company=" . $_POST["company"]
. "&firstname=" . $_POST["firstname"]
. "&lastname=" . $_POST["lastname"]
. "&jobtitle=" . $_POST["jobtitle"]
. "&email=" . $_POST["email"]
. "&calculation=" . $_POST["calculation"]
. "&hs_context=" . urlencode($hs_context_json); //Leave this one be

Я попытался установить соответствующий $ scope для имени переменной и до сих пор ничего.

Любая помощь будет с благодарностью. Спасибо.

0

Решение

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

Я очень рекомендую прочитать этот раздел этого поста: https://scotch.io/tutorials/submitting-ajax-forms-the-angularjs-way#submit-the-form-with-angular

Он может коснуться некоторых вещей, которые вы уже знаете, но он покажет вам, как именно использовать привязку данных, чтобы получить значения ваших входных данных, а затем использовать угловые $http сервис вместо JQuery AJAX для отправки данных в ваш API.

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

1

Другие решения

Просто, основываясь на том, что было сказано в других ответах, вам будет проще использовать Angular’s $http оказание услуг. Вызов AJAX должен выполняться из вашего контроллера.

Лучший способ отправить форму, как это, это связать input элементы к $scope с использованием ng-model директивы. Затем, когда форма отправлена, вы вызываете submit функция в вашем контроллере с помощью ng-submit директивы. Звучит сложно, но работает как шарм.

HTML

<div ng-controller="YourController">
<form ng-submit="submit(myForm.$valid)" name="myForm" novalidate>
<input ng-model="responses.company" type="text">
<!-- More fields go here, all linked to scope with ng-model -->
</form>
</div>

JS

app.controller('YourController', ['$scope', '$http', function($scope, $http){
$scope.responses = {};

$scope.submit = function(valid){
if(valid){

var calculation = parseFloat($scope.responses.input1) * parseFloat($scope.responses.selectedValue);

$http({
method: 'POST',
url: 'form.php',
data: {
company: $scope.responses.company,
firstname: $scope.responses.firstname,
lastname: $scope.responses.lastname,
jobtitle: $scope.responses.jobtitle,
email: $scope.responses.email,
calculation: calculation
}
}).then(function successCallback(response) {
//Success!
}, function errorCallback(response) {
//Failure :(
});
}
};
}]);
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector