Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 表单帖子和jquery帖子之间的区别_Php_Jquery_Html_Post - Fatal编程技术网

Php 表单帖子和jquery帖子之间的区别

Php 表单帖子和jquery帖子之间的区别,php,jquery,html,post,Php,Jquery,Html,Post,我需要知道以下两者之间的确切区别: <form method="POST" action="https://mywebsite/signon.php"> <input name="harv_acc" value="940322903" type="hidden" /> <input name="harv_eml" value="a@b.com" type="hidden" /> <input type="submit" value="SignOn" /&

我需要知道以下两者之间的确切区别:

<form method="POST" action="https://mywebsite/signon.php">
<input name="harv_acc" value="940322903" type="hidden" />
<input name="harv_eml" value="a@b.com" type="hidden" />
<input type="submit" value="SignOn" />

var url=”https://mywebsite/signon.php";
$.ajax({
url:url,
键入:“POST”,
//数据类型:“html”-这是我后来尝试过的
//数据:“harv_acc=“+accountnumber+”&harv_eml=“+email,这也是我上一次尝试的内容,但下面是我第一次尝试的内容
数据:{harv_acc:account,harv_eml:email},
成功:功能(数据){
关闭弹出窗口(“div_plesewait”);
警报(数据);
//window.location=encodeURI('?DocumentID='+DocumentID+'&DownloadType='+DownloadType+'&DownloadPath='+data);
}
});

当我发布后者时,我得到了200分,但没有回应。如果我提交第一个,我会得到正确的响应。

在使用POST方法时,您应该将数据作为JSON发布

var url = "https://mywebsite/signon.php";
$.ajax({
    url: url,
    type: 'POST',
    dataType: 'html',
    data: {
      harv_acc : accountnumber,
      harv_eml : email
    },
    success: function (data) {
        closePopup("div_PleaseWait");
        alert(data);
        //window.location = encodeURI('<%= Url.Action("DownloadDocument", "Documents") %>?DocumentID=' + documentID + '&DownloadType=' + downloadType + '&DownloadPath=' + data);
    }
});
var url=”https://mywebsite/signon.php";
$.ajax({
url:url,
键入:“POST”,
数据类型:“html”,
数据:{
harv_acc:账号,
harv_eml:电子邮件
},
成功:功能(数据){
关闭弹出窗口(“div_plesewait”);
警报(数据);
//window.location=encodeURI('?DocumentID='+DocumentID+'&DownloadType='+DownloadType+'&DownloadPath='+data);
}
});

注意:我使用了dataType:JSON

尝试将数据作为key:value对象发送。这是jQuery文档中的一个示例

    $.ajax({
  type: "POST",
  url: "some.php",
  data: { name: "John", location: "Boston" }
}).done(function( msg ) {
  alert( "Data Saved: " + msg );
});
更新:正如用户Matchu指出的,这不是问题所在,因为数据将被转换为查询字符串,正如jQuery文档中所述:

数据选项可以包含形式为key1=value1&key2=value2的查询字符串,也可以包含形式为{key1:'value1',key2:'value2'}的映射。如果使用后一种形式,则在发送数据之前,使用jQuery.param()将数据转换为查询字符串

是的,我的回答有些鲁莽。至少我学到了一些东西!;)

从评论中:

我正在发布到另一个站点

啊哈!这是你的问题。出于安全原因,浏览器会阻止AJAX访问外部网站。很抱歉,您不会通过XHR请求发出该请求

如果其他网站希望您与他们交流,他们可以通过JSON-p公开网站的这一部分,其工作原理如下:

  • 我的站点将
    添加到源代码中(是的,使用GET进行此操作很麻烦,但是JSON-P无法以任何其他方式工作),并创建一个名为
    myCallback
    的函数来处理响应数据
  • 另一个站点登录,然后返回类似于
    myCallback的内容({success:false,errorMessage:“密码不正确,请重试!”})
  • 该脚本在我的网站上运行,调用
    myCallback
    ,一切都很顺利
  • JSON-p是一个功能强大的协议,但只有在远程站点同意的情况下才能工作。尽管如此,jQuery还是有一个很好的快捷方式:只需设置
    数据类型:“jsonp”
    ,它就可以为您处理整个回调过程


    但是如果你与这个网站没有密切的联系,那就不太可能发生,你可能不得不放弃这种跨网站的互动。抱歉,这种跨域策略对联机安全至关重要。(我不希望其他网站代表我kthx向bankofamerica.com发出请求。)

    传递给
    complete
    函数的第一个参数将是
    jqXHR
    对象,它是浏览器
    XMLHttpRequest
    对象的包装器。处理响应更方便的方法是使用
    done
    方法:

    var url = "https://mywebsite/signon.php";
    $.ajax({
        url: url,
        type: 'POST',
        dataType: 'html',
        data: "harv_acc=" + accountnumber + "&harv_eml=" + email
    }).done(function(data) {
        closePopup("div_PleaseWait");
        alert(data);
    });
    

    浏览器不支持跨域ajax请求。但还有另一种方法可以解决这个问题

    您可以用于跨域请求。它易于使用,允许您从任何支持回调的服务器/脚本请求任何内容(只要是JSON格式)。JSONP的优点是它也适用于较旧的浏览器

    唯一严重的限制似乎是它总是使用HTTPGET方法


    请您也检查一下。

    您如何从文件返回数据。您需要在php文件中回显输出,才能在ajax中获得响应。它们看起来与我非常相似。什么是正确的回答?@Cptcecil你能发布你的php代码吗?我没有访问php代码的权限,我正在发布到另一个网站。不过我想我可以向他们要。这将非常有帮助。@Cptcecil安全性防止跨域ajax请求。这就是为什么您没有得到与另一个答案类似的响应:
    dataType
    不是指
    数据的类型,而是指我们在响应中期望的数据类型。虽然jQuery团队可能会做出愚蠢的命名决定。另外,
    data
    实际上可以是一个查询字符串,如果我们以对象形式给它数据,jQuery将把它转换成相应的查询字符串。尽管如此,问题中的原始版本不是正确的
    encodeURIComponent
    'd,因此这实际上可以解决一些问题。我说的是“你应该”而不是“你必须”!!如果没有跨域问题,这就是问题所在!
    var url = "https://mywebsite/signon.php";
    $.ajax({
        url: url,
        type: 'POST',
        dataType: 'html',
        data: "harv_acc=" + accountnumber + "&harv_eml=" + email
    }).done(function(data) {
        closePopup("div_PleaseWait");
        alert(data);
    });