Javascript 如何知道哪些数据必须通过ajax发送,这是一个特定的问题
我正在学习JS,遇到了另一个困难,希望任何人都能帮助我。无论它是jQuery中的解决方案还是Angular中的解决方案,无论如何我都需要这两种解决方案,我只是想得到这个概念。所以,我的HTML中有两种类型的任务,用户可以选择解决哪一种-音频或图形。现在我的JS看起来像:Javascript 如何知道哪些数据必须通过ajax发送,这是一个特定的问题,javascript,php,jquery,angularjs,ajax,Javascript,Php,Jquery,Angularjs,Ajax,我正在学习JS,遇到了另一个困难,希望任何人都能帮助我。无论它是jQuery中的解决方案还是Angular中的解决方案,无论如何我都需要这两种解决方案,我只是想得到这个概念。所以,我的HTML中有两种类型的任务,用户可以选择解决哪一种-音频或图形。现在我的JS看起来像: var request = $http({ method: 'POST', url: 'check.php', data: { 'audioAnswer': $scope.audioValue
var request = $http({
method: 'POST',
url: 'check.php',
data: {
'audioAnswer': $scope.audioValue.data,
'imageAnswer': $scope.imageValue.data,
'userAnswer': $scope.userAnswer
},
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});
正如您现在看到的,我正在发送用户答案和两个问题的ID(音频和图形)。所以我不知道他一直在解决哪一个问题,只是将这两个问题与我服务器上的用户答案进行比较,显然这不是最好的解决方案
编辑
当前包含音频和图形任务的HTML如下所示
<div class="cptch_bottom-hold">
<div class="cptch_player" id='cptch_blue-button' ng-show='show'>
<i class="fa fa-volume-up cptch_icon-hold" id="cptch_icon">
<audio ng-src='{{audioSrc.data}}' id="audioplayer"></audio>
<input type="hidden" name="audio_answer" class="player_input" ng-model='audioValue'>
</i>
</div>
<div class="image-hold" ng-show='!show'>
<img class='cptch_image' ng-src='{{imageSrc.data}}' ng-if='imageSrc' alt='image'>
<input type="hidden" name="image_answer" class="image_input" ng-model='imageValue'>
</div>
</div>
所以问题是-如何理解用户正在解决的任务?只需点击一个按钮,任务就会发生变化,所以在一瞬间你就可以看到一个任务。
任何建议都将不胜感激:)可能的解决方案是: 您将一个事件附加到两个输入,当有人开始键入时,另一个将消失。
在同一事件中,您可以“保存”输入的两个语句中的哪一个,以便在ajax调用中执行if语句
在同一事件中,还应检查输入是否已删除,以便再次显示两个输入。可能的解决方案是: 您将一个事件附加到两个输入,当有人开始键入时,另一个将消失。
在同一事件中,您可以“保存”输入的两个语句中的哪一个,以便在ajax调用中执行if语句
在同一事件中,还应检查输入是否已删除,以便再次显示两个输入。您需要在方法外部创建对象,而不是作为方法的参数,如:
var data = {};
if($scope.audioValue.data) { data.audioAnswer = $scope.audioValue.data);
if($scope.userAnswer.data) { data.userAnswer= $scope.userAnswer.data);
if($scope.imageAnswer.data) { data.imageAnswer= $scope.imageAnswer.data);
var request = $http({
method: 'POST',
url: 'check.php',
data: data,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});
您需要在方法之外创建对象,而不是作为方法的参数,如下所示:
var data = {};
if($scope.audioValue.data) { data.audioAnswer = $scope.audioValue.data);
if($scope.userAnswer.data) { data.userAnswer= $scope.userAnswer.data);
if($scope.imageAnswer.data) { data.imageAnswer= $scope.imageAnswer.data);
var request = $http({
method: 'POST',
url: 'check.php',
data: data,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});
可以在发送数据对象之前创建要发送的数据对象 像这样:
var dataToBeSent = {};
if (isAudioAnswer) {
dataToBeSent.audioAnswer = $scope.audioValue.data;
dataToBeSent.userAnswer = $scope.userAnswer;
} else if (isImageAnswer) {
dataToBeSent.imageAnswer = $scope.imageValue.data;
dataToBeSent.userAnswer = $scope.userAnswer;
}
var request = $http({
method: 'POST',
url: 'check.php',
data: dataToBeSent,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});
可以在发送数据对象之前创建要发送的数据对象 像这样:
var dataToBeSent = {};
if (isAudioAnswer) {
dataToBeSent.audioAnswer = $scope.audioValue.data;
dataToBeSent.userAnswer = $scope.userAnswer;
} else if (isImageAnswer) {
dataToBeSent.imageAnswer = $scope.imageValue.data;
dataToBeSent.userAnswer = $scope.userAnswer;
}
var request = $http({
method: 'POST',
url: 'check.php',
data: dataToBeSent,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});
在AJAX函数中使用数据之前,请先选择数据。这真的很简单。你需要一种方法来区分用户点击了什么,以及解决了什么,所以基本上你不是问我们如何编写一个简单的
if
条件,而是如何知道你的用户做了什么,而不向我们显示任何代码?可能是@adeneo的重复,你是对的。但我不明白我到底要向你们展示什么才能理解我的问题…@Jay Blanchard对不起,我的问题是错误的和模棱两可的。现在已编辑。在AJAX函数中使用数据之前,请先选择数据。这真的很简单。你需要一种方法来区分用户点击了什么,以及解决了什么,所以基本上你不是问我们如何编写一个简单的if
条件,而是如何知道你的用户做了什么,而不向我们显示任何代码?可能是@adeneo的重复,你是对的。但我不明白我到底要向你们展示什么才能理解我的问题…@Jay Blanchard对不起,我的问题是错误的和模棱两可的。现在编辑。谢谢你的反馈,我会谢谢你的反馈,我会谢谢你,对不起,我的问题是关于如何解决问题。编辑。无论如何,谢谢你,对不起,我的问题是关于如何解决问题。编辑。无论如何,谢谢你,伙计,对不起,我的问题是如何解决问题。编辑。无论如何,谢谢你,伙计,对不起,我的问题是如何解决问题。编辑。无论如何,谢谢。