PDA

View Full Version : مشکل در ارسال فرم با jsonp



saeed4320
پنج شنبه 14 شهریور 1392, 10:56 صبح
سلام من میخوام با jsonp از یه سرور به سرور دیگه فرمی رو ارسال کنم . کسی میدونه چکار باید بکنم کدی که استفاده می کنم رو میذارم وقتی از button استفاده می کنم کار می کنه اما با submit مشکل داره



<!DOCTYPE html>
<html lang="en">
<head>
<title>JQuery JSONP</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script>
$(document).ready(function(){

$("#frm1").submit(function(){
var txt = $('#frm1 #txt').val();
var d1 = {'txt':txt};
$.ajax({
url: 'http://example.com/ajaxtest.php',
type:'get',
data: d1,
dataType: 'jsonp',
jsonp: 'callback',
jsonpCallback: 'jsonpCallback',
success: function(){
alert("success");
}
});
});

});

function jsonpCallback(data){
$('#jsonpResult').text(data.message);
}

</script>
</head>

<body>
<form name="frm1" id="frm1" method="get">
<input type="submit" id="useJSONP" value="Use JSONP" /><br /><br />

<input type="text" name="txt" id="txt" />
</form>
<span id="jsonpResult"></span>
</body>
</html>

jalil_gh
پنج شنبه 14 شهریور 1392, 11:32 صبح
فکر کنم مشکلش اینه که شما هر وقت submit رو میزنید صفحه رفرش میشه. شما از preventDefault یا return false داخل کد مربوط به submit استفاده کنید تا هر وقت submit رو زدید صفحه رفرش نشه.

saeed4320
پنج شنبه 14 شهریور 1392, 11:49 صبح
ممنونم با return false درست شد کد تصحیح شده رو گذاشتم شاید به درد کسی بخوره



<!DOCTYPE html>
<html lang="en">
<head>
<title>JQuery JSONP</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script>
$(document).ready(function(){

$("#frm1").submit(function(){
$.ajax({
url: 'http://example.com/ajaxtest.php',
data: {name: 'Chad'},
dataType: 'jsonp',
jsonp: 'callback',
jsonpCallback: 'jsonpCallback',
success: function(){
alert("success");
}
});
return false;
});

});

function jsonpCallback(data){
$('#jsonpResult').text(data.message);
}
</script>
</head>

<body>
<form name="frm1" id="frm1" method="get">
<input type="submit" id="useJSONP" value="Use JSONP" /><br /><br />


</form>

<span id="jsonpResult"></span>
</body>
</html>


اینهم کد php که باید توی سرور اصلی قرار بگیره ( صفحه ajaxtest.php )




<?php
header("content-type: text/javascript");

if(isset($_GET['name']) && isset($_GET['callback']))
{
$obj->name = $_GET['name'];
$obj->message = "Hello " . $obj->name;

echo $_GET['callback']. '(' . json_encode($obj) . ');';
}
?>