dprnr5559 2014-11-19 15:13
浏览 83

如何获取jQuery Ajax请求返回的PHP页面

So I have to send some data to a php page, and it will return me another php page based on my data.

I send the data this way:

$(document).ready(function() {
    $.ajax({
        url: '//www.example.com/page.php',
        type: "post",
        dataType: 'jsonp',
        data: { myvar:myvalue }, 
        success: function(response) { console.log("success."); },
        error: function(XMLHttpRequest, textStatus, errorThrown) { console.log("error."); },
        complete: function() { console.log("complete."); }
    });
});
  • It shows an alert saying jQuery180014405992737595236_1357861668479 was not called (numbers are copied from other question) I think the reason is that it's expecting a json result from the page, when it's not.
  • In Chrome it says Uncaught SyntaxError: Unexpected token < referring to the returned php page, so I assume that my code isnt expecting that kind of file to be returned.

To sum up, this works, but that jQuery alert and the console error needs to be fixed, and I think the right way would be handling properly the returned result page. I hope you guys can help me fix it that seems quite a simple task, but Im really new to this. Thanks

Removing the dataType: 'jsonp' or changing it to 'json' turns out on my script not being executed and getting the following error:

  • XMLHttpRequest cannot load http://www.example.com/page.php. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://myserver.com/myPage' is therefore not allowed access.
  • 写回答

1条回答 默认 最新

  • duanboshi1472 2014-11-19 15:24
    关注

    I think the reason is that it's expecting a json result from the page

    It's expecting a JSONP response. (JSONP is not JSON). You said:

    dataType: 'jsonp',
    

    … which explicitly forces jQuery to treat the response as JSONP (and, as a side effect, GET).

    the returned php page, so I assume that my code isnt expecting that kind of file to be returned.

    The server shouldn't be returning a PHP page. It should be executing the PHP code and returning whatever that outputs. It looks like it is outputting HTML.

    You need to either:

    • Not tell your script to expect JSONP. (Note that you'll probably then have to configure CORS on the server to deal with same origin issues) or
    • Change the PHP to return JSONP
    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)