PHP, jQuery Ajax and json return over a cross domain

╄→尐↘猪︶ㄣ 提交于 2020-01-02 19:13:14

问题


I have my php coded page on one server that returns a json result. php file called: getInfoData.php and the return is as below.

  echo json_encode($v);

No I can use $.getJSON(??) to read the json and run it all on the same sever fine, but I need the php page to be on a different sever than the js page calling it.

But then I get then when I do I get the cross domain issue.

So I changed the code to use the following (jsonp):

  $.ajax({
    url: 'FILE_LOCATION_ON_ANOTHER_SERVER',
    type: 'GET',
    crossDomain: true,
    dataType: 'jsonp',
    success: function() { console.log("Success"); },
    error: function() {console.log('Failed!'); }
});

but I do not see anything I just get the following with my console:

  http://www.THEURL.com/FOLDER/FILENAME.php?callback=jQuery171013088115444406867_1332256223342&_=1332256223343

and a message saying failed!.

What am I doing wrong and how if at all can I fix this?

Thanks


回答1:


JSONP isn't actually JSON. It's a bit of a "hack". JSONP is actually a JavaScript file, that gets downloaded and ran.

In your PHP page, you should be passed a callback parameter. You need to "wrap" your JSON in it. It should look like this:

func({json: data})

So, your PHP should look like this:

echo $_GET['callback'] . '(' . json_encode($v) . ')';



回答2:


I use this usually but maybe there is a better way

<?php header('content-type: application/javascript; charset=utf-8');

$data = array(1, 2, 3, 4, 5, 6, 7, 8, 9);

echo htmlspecialchars($_GET['callback']) . '('.json_encode($data).')';

since i saw you provided a callback parameter everything should be ok



来源:https://stackoverflow.com/questions/9789487/php-jquery-ajax-and-json-return-over-a-cross-domain

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!