将json响应传递给函数

时间:2016-01-04 03:47:33

标签: javascript jquery json

是否可以将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

但不幸的是,它不起作用。请提供任何帮助,线索,想法,建议和建议吗?

3 个答案:

答案 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的回复