jQuery ajax调用可从浏览器地址栏访问,而不是从代码访问

时间:2019-06-05 14:57:17

标签: jquery ajax

这不是不是 CORS问题,该请求与从其发起的页面进入相同的域。

我有一个jquery ajax调用(使用GET,传递一个值),当我将完整的url放在浏览器地址栏中时,它可以正常工作,但是当我从代码中调用它时,会调用ajax错误函数,但是url是永远不会从浏览器发送到服务器。

我在这里发现的类似问题都没有给我答案。

我已经在开发人员工具网络面板中进行了监视,当我直接从浏览器地址栏中发送url时,请求已发送,并且得到了预期的响应。当我从javascript代码发送请求时,它永远不会发送,但是会调用ajax.error()函数。

JAVASCRIPT:

url = "https://blahblah.com/ajax?handler=createTopic&topicName=Test";
jQuery.ajax({
  type: "GET", // backward compatibility
  method: "GET", 
  url: url,
  dataType: "json",
  success: topicSuccess,
  error: topicFailure
});

function topicFailure(xhr, status, err)
{
  console.log('Topic create failed, with a status code of "' + status + '", and HTTP status of ' + xhr.status);
 console.log(xhr);
}

PHP:

$result = createTopic($parms); // $parms has the data passed in
// $result contains correct json data, verified
header('Content-Type: application/json'); 
http_response_code(200);
echo "$result \n";
exit;

编辑:

对不起,如果我没有提供足够的信息。此ajax请求将与发起请求的页面进入同一域。因此,除非对ajax请求有相同的新要求,否则源策略不是问题。

错误函数输出以下内容(上面的代码):

主题创建失败,状态码为“错误”,HTTP状态为0

当我在firefox中观看开发工具的网络面板时,没有请求被发送。所以我想真正的问题是:

什么会阻止浏览器使用javascript发送简单的ajax GET请求?

再次,请求如下所示:

https://xxxxxx.com/ajax?handler=createTopic&topicName=test

,当我将其直接放在浏览器地址栏中时,该请求就可以正常工作。

0 个答案:

没有答案