是否可以将JSON响应传递给函数?
这是我尝试过的(参见下文)
的Ajax
$(document).ready(function(){
//start for #send click function
$("#send").click(function(){
$.ajax({
url: 'test.php',
data: { request_id : '1' },
type: 'post',
success: function(e){
window['test'](e);
}
});
});
//end of #send click function
});
function test(e){
$.each(e, function(index, value){
alert(value.name);
});
}
这是我使用'console.log(e)
得到的Sfdump = window.Sfdump || (function(doc){var refStyle = doc.createElement('style'),rxEsc = /([.*+?^${ }()| [] /\†)/ g,idRx = / \ BSF-dump- \ d + -ref [012] \ W + \ B /; doc.documentElement.firstChild.appendChild(refStyle);功能 toggle(a){var s = a.nextSibling || {}; if('sf-dump-compact'== s.className){a.lastChild.innerHTML ='▼'; s.className = 'SF-转储扩展'; } else if('sf-dump-expanded'== s.className){ a.lastChild.innerHTML ='▶'; s.className ='sf-dump-compact'; } 别的{return false; } return true; }; return函数(root){root = doc.getElementById(根); function a(e,f){root.addEventListener(e, function(e){if('A'== e.target.tagName){f(e.target,e);其他 if('A'== e.target.parentNode.tagName){f(e.target.parentNode,e); } }); }; root.addEventListener('mouseover',function(e){if(''!= refStyle.innerHTML){refStyle.innerHTML =''; }};一个(“鼠标悬停”, function(a){if(a = idRx.exec(a.className)){refStyle.innerHTML = 'pre.sf-dump。'+ a [0] +'{background-color:#B729D9;颜色:#FFF !重要; border-radius:2px}'; }}; a('click',function(a,e){ if(/\bsf-dump-toggle\b/.test(a.className)) {e.preventDefault();如果 (!toggle(a)){var r = doc.getElementById(a.getAttribute('href')。substr(1)),s = r.previousSibling,f = r.parentNode,t = a.parentNode; t.replaceChild(r,a); f.replaceChild(a,s); t.insertBefore(s,r); f = f.firstChild.nodeValue.match(indentRx); t = t.firstChild.nodeValue.match(indentRx); if(f&& t&& f [0]!== t [0]){ r.innerHTML = r.innerHTML.replace(new RegExp('^'+ f [0] .replace(rxEsc, '\ $ 1'),'mg'),t [0]); } if('sf-dump-compact'== r.className){ 肘节(S); }}}; var indentRx = new RegExp('^('+(root.getAttribute('data-indent-pad')||' ').replace(rxEsc,'\ $ 1')+')+','m'),elt = root.getElementsByTagName('A'),len = elt.length,i = 0,t = [];而 (i< len)t.push(elt [i ++]); elt = root.getElementsByTagName('SAMP'); len = elt.length; i = 0; while(i< len)t.push(elt [i ++]); root = t; len = t.length; i = t = 0;而(i
但不幸的是,它不起作用。请提供任何帮助,线索,想法,建议和建议吗?
答案 0 :(得分:1)
HTML和jquery
<html>
<head>
<title>
Ajax Responce
</title>
<script src="//code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
//start for #send click function
$("#send").click(function () {
$.ajax({
url: 'test.php',
data: {request_id: '1'},
type: 'post',
dataType: 'json',
success: test
});
});
//end of #send click function
});
function test(e) {
//var data=$.parseJSON(e);
console.log(e);
$.each(e, function (index, element) {
$('#txt').append(element+"<br>");
});
}
</script>
</head>
<body>
<input type="button" value="send" name="bt" id="send" >
<div id="txt"></div>
</body>
</html>
<强> test.php的强>
$res = $_REQUEST['request_id'];
$arr = array("id" => $res, "name" => "Testing", );
echo json_encode($arr);
你必须要json_encode数组。 然后它将在jquery中解析。 在测试功能中,您想要调用它。在ajax成功之后。 试试这个...它会解决你的问题。
答案 1 :(得分:0)
@CodeDemon你的窗口调用有一个错误,这就是它倾销HTML等的原因。窗口调用与下面的代码是否有原因。我测试基本的,例如在下面,如果可行,然后扩展故障排除:
$(document).ready(function(){
function test(e){
console.log('Peak into e', e);
if (e !== undefined && Object.keys(e) > 0) {
$.each(e, function(index, value){
alert(value.name);
});
} else {
alert('something's wrong with e');
}
}
//start for #send click function
$("#send").click(function(){
$.ajax({
url: 'test.php',
data: { request_id : '1' },
type: 'post',
success: function(e){
test(e);
}
});
});
//end of #send click function
});
答案 2 :(得分:0)
直到你解析&#34;它,响应只是一个字符串。您需要使用JSON.parse(e).each...
你可以让jquery自动将字符串转换为json,但你必须告诉它。查看jquery json的回复