我为我的网站制作了一个小的AJAX脚本,它在提交时在另一个文件中执行一个php脚本。我设法用AJAX函数回显原始文件中的结果,但我还没有设法将变量从php文件传输到原始文件。
我需要这个变量才能添加一个事件监听器,它将查找该特定变量的变化(不知道如何做到这一点)。
答案 0 :(得分:1)
首先创建一个应该是输出的数组。 JSON对该数组进行编码,然后您可以在ajax成功处理程序中解析输出。就像你的php文件输出一样:
echo json_encode(array(
'result' => 'null',
'error' => 'nan'
));
然后在你的ajax成功中将json转换为一个对象并根据需要解析数据:
success: function (data, textStatus, jqXHR) {
var obj = $.parseJSON(data);
$('#utmatning').html(obj.result); // result value from your json return
$('#utmatning').append(obj.error); // error value from your json return
}
答案 1 :(得分:1)
在你的php文件的最后,添加,
json_encode($a);
在ajax的成功中,
success: function(html) {
$.each(html, function(index, element) {
alert(element.result);
alert(element.error);
//append to which ever div you want.
});
}
现在有了这个,你可以从php
获得n
个数组索引
答案 2 :(得分:1)
不是在hej.php中回显字符串,而是将JSON数据返回到ajax调用。因此,您可以评估是否发生错误,错误是哪个错误或返回了哪个有效结果。
hej.php:
<?php
$one=$_GET['value'];
if(empty($one)) {
$a['result']='null';
$a['error'] = 'No value!!';
} else {
if(is_numeric($one)) {
$a['result']=$one*2;
$a['error']='ok';
} else {
$a['result']='null';
$a['error']='nan';
}
}
die(json_encode ($a));
?>
如果$ value为1将返回
{"result":"2","error":"ok"}
在forsok.php中,您可以查看结果并采取相应行动
...
$.ajax({
type: "GET",
dataType: "json",
url: url,
data: $("#idForm").serialize(), // serializes the form's elements.
success: function(response)
{
if (response.error=='ok'){
$('#utmatning').html(response.result); // show response from the php script.
}
else{
console.log(response.result); // handle the error
}
}
});
...
此致 斯蒂芬
答案 3 :(得分:1)
以下是您正在寻找的工作: - 把它放在你的forsok.php
中var myApp = angular.module("myApp", []);
myApp.controller("myController", function($scope){
$scope.list = [];
var item1 = {name:'Item 1',course:'test1'};
var item2 = {name:'Item 2',course:'test2'};
$scope.list.push(item1);
$scope.list.push(item2);
$scope.addMenuItemFun = function (item) {
try {
var itemToAdd = {
name: item.name,
course: item.course
};
$scope.list.push(itemToAdd);
}
catch(err) {
alert(err);
}
};
});
myApp.directive('menuItemRepeater', function () {
return {
restrict: 'E',
template: '<div ng-repeat="item in list">{{item.name}}</div><add-menu-item courseText="courseText" add-item="addItemFunc()"></add-menu-item>',
scope: {
courseText: '@coursetext',
addItemFunc: '&',
}
}
});
myApp.directive('addMenuItem', function(){
return {
retstrict: 'E',
template: '<div class="form-group"><label for="name">Name of new item: </label><input ng-model="itemName" type="text" class="form-control" id="itemName" ><input ng-model="courseText" type="hidden" value="{{courseText}}" /> </div> <button class="btn btn-default" ng-click="addNewItem1()">Submit</button>',
scope: {
courseText: '@couresetext',
addItem: '&',
itemName: '='
},
link: function (scope, $element) {
scope.addNewItem1 = function () {
var newItem = {
name: scope.name,
course: scope.courseText
};
scope.addItem({ item: newItem });
};
}
}
});
对于hej.php: -
<div id="input">
<input type="text" id="number" name="value">
<b id="show_result"></b>
</div>`
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
$('#number').on('keyup',function(e){
if(e.which == 13){
var get_var_name = $(this).val();
$.get('result.php',{number:get_var_name},function(data,status){
if(status == 'success'){
alert(data['show']);
$('#show_result').text(data['show']);
}else{
alert('Nothing');
}
});
}
});
</script>