如何获取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.
doulangbi6869
doulangbi6869 “从这个例子可以看出,CORS支持需要服务器和客户端之间的协调。”-html5rocks.com/en/tutorials/cors如果我做对了,为了能够使用CORS,我应该能够修改example.com和myServer.com,而example.com不是我的...
接近 6 年之前 回复
doujia2090
doujia2090 stackoverflow.com/questions/20035101/...
接近 6 年之前 回复
doushu7588
doushu7588 检查我的编辑,如果我更改或删除jsonp,它不再工作,我会得到更糟糕的错误。以前它工作,但我得到一个jQuery错误。
接近 6 年之前 回复
dongxiezhi0590
dongxiezhi0590 丹尼尔看到我的回答,当你说jsonp它期待jsonp响应被发回。因此,如果你想要发回一个html页面,那么你需要删除该行或将其更改为dataType:'html'但如果你有发送数据的问题,那么json对它进行编码然后在服务器上对其进行解码
接近 6 年之前 回复
douye2020
douye2020 我以为我需要指定我发送的数据是json但它给了我一些错误,修复了它将它改为jsonp,我应该把它留作json,还是只删除那行?
接近 6 年之前 回复
douyou8047
douyou8047 这个php页面是否知道它是通过jsonp调用的?您不能只在任何随机服务器上关闭json请求-服务器必须知道如何正确响应。鉴于你得到“未调用”错误,那么我猜测服务器不是jsonp意识到的,并且没有使用正确的JS回调函数包装器输出。
接近 6 年之前 回复
doubo4824
doubo4824 并且dataTypejsonp确实需要返回json,如果它是您期望的HTML,则将其更改为html
接近 6 年之前 回复
doupu1957
doupu1957 尝试取消dataType参数,服务器正在发回HTML。如果服务器不发送一致的响应,您可能必须从字符串解码JSON。
接近 6 年之前 回复
dongshi1148
dongshi1148 是不同于javascript执行位置的域上的php脚本(在示例中,javascript是否在www.example.com的页面上运行)?
接近 6 年之前 回复

1个回答




我认为原因是它期待来自页面的json结果</ p>
</ blockquote >

期待JSONP响应。 (JSONP不是JSON)。 你说:</ p>

  dataType:'jsonp',
</ code> </ pre>

...它明确强制jQuery将响应视为 JSONP(以及副作用,GET)。</ p>


返回的php页面,所以我假设我的代码不希望返回那种文件。< / p>
</ blockquote>

服务器不应返回PHP页面。 它应该执行PHP代码并返回任何输出。 看起来它正在输出HTML。</ p>

您需要:</ p>


  • 不要告诉您的脚本期望JSONP。 (请注意,您可能必须在服务器上配置CORS以处理相同的原始问题)或</ em> </ li>
  • 更改PHP以返回JSONP </ li> \ n </ ul>
    </ div>

展开原文

原文

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

dongzhang7157
dongzhang7157 - 我告诉你你的代码出了什么问题。 您告诉jQuery将响应视为JSONP。 响应不是JSONP。 如果服务器不允许您指示访问者浏览器从中获取数据(通过CORS),那么您无法直接使用Ajax访问它。
接近 6 年之前 回复
dougu4448
dougu4448 我的脚本将数据发送到我无法控制的另一台服务器,所以我可以更改的是我提供的代码。 它将返回一个html,但我不知道我的代码中有什么错误以及如何获取返回的页面。
接近 6 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐