在JsonP中获得不正确的响应

时间:2013-12-12 11:57:52

标签: javascript php jquery ajax json

我正在使用index.php方法将exec.php文件中的数据发送到另一个$.ajax文件,并在我使用jsonp回调发送输出数据时执行该文件上的数据index.php上的数据不正确。我也将相同的输出数据写入exec.php上的txt文件,我在txt文件中获得了正确的数据。

这是我在index.php

中的ajax调用
$.ajax({
            type: 'GET',
            url: 'exec.php',
            dataType: 'JSONP',
            data: {code : code},
            success: function(data) 
            {
                alert(data);
                $(loader).addClass('hidden');
                var stdout = $(form).children('.stdout');
                if (data.search("Parse error")>0)
                {
                    var str = data.replace('<b>Parse error</b>:  ','');
                    $(stdout).html(str);
                    $(stdout).removeClass('hidden');    
                }   
                else
                {
                    $(stdout).html(data);
                    $(stdout).removeClass('hidden');
                }   
            },
             error: function (status,req,err) { 
             var errorMessage = err || req.statusText;
                alert(errorMessage);
             }, // When Service call fails             

            responseType: "jsonp"
        });   

这是来自exec.php的我的json回调代码

$result = str_replace('"','\"', $script_output);
$script_output = str_replace('"','\"', $script_output);
$file = fopen("test.txt","w");
echo fwrite($file,$script_output);
fclose($file);
//print "processJSON({'result':'$result'})";
header('Content-Type: application/jsonp');
echo $_GET['callback'] . '(' . "{'result' : '$result'}" . ')';

现在这是我在萤火虫中得到的回应。

屏幕截图 - http://screencast.com/t/nqdAR7JedMk 我通过ajax方法的错误警告我得到这个错误 屏幕截图 - http://screencast.com/t/5RRlYiha2C0

请告诉我我的错误

2 个答案:

答案 0 :(得分:3)

我找到了答案。额外的数字是在json回调时返回的。所以我已经注释掉了,我的一些代码和完美的输出就在这里,

$result = str_replace('"','\"', $script_output);
$script_output = str_replace('"','\"', $script_output);
//$file = fopen("test.txt","w");
//echo fwrite($file,$script_output);
//fclose($file);
//print "processJSON({'result':'$result'})";
header('Content-Type: application/jsonp');
echo $_GET['callback'] . '(' . "{'result' : '$result'}" . ')';

答案 1 :(得分:1)

您的代码中有一些内容可以在行之前打印数字(屏幕截图上的2311) print "processJSON({'result':'$result'})";

标识符之前的那个数字使javascript代码无效。