$("#btnSubmit").click(function () {
var fields = $("#testform").serializeObject();
var response = "Nista";
JSONstring = JSON.stringify(fields);
alert(JSONstring);
$.ajax({
type: "GET",
url: "http://localhost/testSimple.php?symbol=IBM&jsonpCallback=?",
// url: "http://localhost/testSimple.php?json=" + JSONstring,
dataType: "jsonp",
success: function (msg) {
alert("SUCCESS");
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
in html:
<div id="dynamicContent" class="dynamicContent">
<form id="testform" method="post">
<div class="fm-req">
<h2>
The Form:</h2>
</div>
<!--<input type="text" name="message" id="Text1" name="Fieldname22" />-->
</form>
<div class="fm-add">
<input id="btnSubmit" type="button" value="Submit" />
</div>
</div>
和php脚本
<?php
$person = array(
'name' => 'Quentin',
'country' => 'Australia'
);
header('Content-type: application/json');
echo json_encode($person);
?>
在萤火虫中没有问题,但成功并没有得到回应..
为什么?
答案 0 :(得分:2)
尝试将PHP脚本更改为:
<?php
$jsonpCallback = $_GET['jsonpCallback'];
$person = array(
'name' => 'Quentin',
'country' => 'Australia'
);
header('Content-type: application/json');
echo $jsonpCallback.'('.json_encode($person).')';
?>
您的JavaScript应该是这样的:
$("#btnSubmit").click(function () {
var fields = $("#testform").serialize();
$.ajax({
type: "GET",
url: "http://localhost/testSimple.php?"+fields+"&jsonpCallback=?",
dataType: "jsonp",
success: function (msg) {
alert("SUCCESS");
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
});
答案 1 :(得分:0)
请记住jsonp
无法在localhost上运行!
但:
你必须将这些行添加到你的PHP代码中;
header("access-control-allow-origin: *");
header('content-type: application/json; ');
在localhost模式下将dataType更改为:
dataType:'json'
并且为了测试结果,请在您的ajax请求中执行此操作:
success: function(data, success) {
console.log("success", arguments);
console.log("data", typeof data, data); // Verify the response
},
error: function(jqxhr, textStatus, error) {
console.log("error", arguments);
},
complete: function(jqxhr, textStatus) {
console.log("complete", arguments);
}
答案 2 :(得分:-1)
您需要将数据类型更改为json
dataType: "json",
如果你想使用回调就像这样做
$.ajax({
dataType: 'jsonp',
data: 'id=10',
jsonp: 'jsonp_callback',
url: 'http://myotherserver.com/getdata',
success: function () {
// do stuff
},
});
我在这里发现了一篇关于jsonp的好文章 http://remysharp.com/2007/10/08/what-is-jsonp/